#!/bin/sh

CrashMe() { echo "$1"; exit 1; }

[ X$1 = X ] && CrashMe "Usage: $0 username"

FUser=$1
Group=guftp
Base=/export/ftp
Homes=$Base/export/home
LHome=/export/home/$FUser
GHome=$Base/$LHome

TmplUser=$Homes/!TemplUser

UList=`egrep "^${Group}:" /etc/group | cut -d: -f4- | sed -e 's/,/:|^/g' -e 's/^/^/' -e 's/$/:/'`
GID=`grep "^${Group}:" /etc/group | cut -d: -f3` ; [ X$GID = X ] && CrashMe "No  Group $Group"
grep "^${FUser}:" /etc/passwd || {
  LastUID=`egrep "$UList"  /etc/passwd | cut -d: -f3  | sort -n | tail -1`
  NextUID=`expr $LastUID + 1`
  grep :${NextUID}: /etc/passwd && CrashMe "UID $NextUID already used"
  echo "$FUser:x:$NextUID:$GID:Guest FTP User:$LHome:/bin/false" >>/etc/passwd
  echo "$FUser:l9psrNPahGzw.:6445::::::" >>/etc/shadow
}
echo ",s/^$Group:.*$/&,$FUser/\nw\nq" | ed -s /etc/group
echo "/#!AddUsersHere/\n-\ni\nguest-root\t$GHome\t$FUser\n.\nw\nq" | ed -s /etc/ftpaccess

cd $Homes && mkdir $FUser || CrashMe "Can not create $Homes/$FUser"
cd $TmplUser/.            || CrashMe "$Tusr - not accessible"
find . -print | cpio -cdump $Homes/$FUser  || CrashMe "cpio failed"

chown -R root $GHome      || CrashMe "Chown to root failed"
find $GHome -type f -exec chmod 004 {} \;
find $GHome -type d -exec chmod 001 {} \;
chmod o+x $GHome/bin/* $GHome/usr/lib/*.so*

cd $GHome && for f in `find . -type f -print` ; do [ -f ../!BinLib/$f ] && (rm $f && ln ../!BinLib/$f $f) ; done


PUB=$GHome/pub
[ -d $PUB/. ] || mkdir $PUB || CrashMe "mkdir pub failed"
chown $FUser $PUB           || CrashMe "Chown $FUser failed"
chmod 700    $PUB           || CrashMe "chmod 700 failed"

