#if [ $LOGNAME. != new. ] #then # echo # echo "This function is intended for new users only." # exit 1 #fi echo "This function creates a new account, with full access to all system" echo "features, including international UseNet conferences, world wide" echo "E-mail, editors and programming languages, and much more. Creation of" echo "your account is immediate, but continued access may depend on subsequent" echo "verification of the information." echo echo "This system is dedicated to free information, and there are no fees, but" echo "full and complete information is required to register. If there is any" echo "reason you cannot provide verifiable identification for system records," echo "answer 'n' to the following question." echo echo "create a new account [yn] ? \c" read response if [ $response. != y. ] then exit fi since=/usr/local/lib/since regis=/usr/local/lib/regis file=/usr/local/lib/.regis.log response=n while [ $response. != y. ] do echo echo "Enter your desired login name. This should be a unique" echo "alphanumeric-only word of 8 chars or less in length." echo "This may be your first name, a nickname or handle, or" echo "any other word you would like to be identified by." login="" while [ -z "$login" ] do echo echo " login: \c" read login login=`echo $login | tr "[A-Z]" "[a-z]" \ | tr -cd "\012[0-9][a-z]" | cut -c1-8` if grep "^$login:" /etc/passwd >/dev/null then echo echo "That login is already in use. Please choose another." login="" elif echo "$login" | fgrep -f /usr/local/lib/.dirt >/dev/null then echo echo "That login is unavailable. Please choose another." login="" elif fgrep -x "$login" /usr/local/lib/.banned >/dev/null then echo echo "That login is unavailable. Please choose another." login="" fi case $login in [0-9]*) echo echo "Please choose a login that begins with a letter." login="";; esac done echo echo "Enter your displayable full name, as will be shown on user lists." echo "This may not be a handle, but it is permitted for this name to be an" echo "abbreviation or a nickname, if that is what you are really known by." echo "Enter it using proper capitalization, just as you wish it shown." full="" while [ -z "$full" ] do echo echo "Please enter your displayable full name: \c" read full # full=`echo $full | tr "[A-Z]" "[a-z]" | ucword` full=`echo $full | ucword` done if echo "$full" | grep -i blut >/dev/null then echo "\nThat turkey \"$login\" again, name \"$full\"." >>$file cat /usr/local/lib/.joker stty hupcl kill -9 0 exit fi echo echo "NOTE: All following information is for system records, and will NOT" echo "be available to other users. However, your continued access depends" echo "on all this information being complete, accurate, and verifiable." echo echo "Please enter your full name. This entry may NOT be a handle, but" echo "it must be your complete REAL name. If this should be determined" echo "to be erroneous at some future date, your account will be cancelled." echo "Enter it using proper capitalization, just as if you were signing" echo "a letter. NOTE: this name is NOT the one available to the public" echo "in the system users list." name="" while [ -z "$name" ] do echo echo "full name: \c" read name if echo "$name" | grep " " >/dev/null then : else echo echo "That was supposed to be your full name!" echo "Do you wish to cancel this procedure now? \c" read ans case $ans in y*|Y*) exit;; esac echo "Well, then, try it again..." name="" fi done if echo "$name" | grep -i "simon.*templ.r" >/dev/null then echo "\nThat turkey \"$login\" again, name \"$full\"/\"$name\"." >>$file cat /usr/local/lib/.joker stty hupcl kill -9 0 exit fi echo echo "Your \"street address\" in the next question is considered to be" echo "the address at which your home phone is located. This of course" echo "could NOT be a P. O. box." addr="" while [ -z "$addr" ] do echo echo "Please enter your street address: \c" read addr done city="" while [ -z "$city" ] do echo echo "Please enter your city, state, and zip code: \c" read city done echo echo "Your home phone number is required for verification, whether or not" echo "it is unlisted. You can be assured it will not be made public under" echo "any circumstances." phone="" while [ -z "$phone" ] do echo echo "Please enter your home VOICE phone number, with area code: \c" read phone done echo "Is this a METRO number [yn] ? \c" read met case $met in y*|Y*) phone="$phone METRO";; esac echo echo "(optional) Please enter your work phone number, if any: \c" read work if [ ! -z "$work" ] then echo "Is this a METRO number [yn] ? \c" read met case $met in y*|Y*) work="$work METRO";; esac fi bday="" while [ -z "$bday" ] do echo echo "Please enter your date of birth: \c" read bday done echo echo "The next few questions are optional, but may assist us to provide" echo "better service to you and other users." echo echo "(optional) Please enter type of PC you are using: \c" read equip echo echo "(optional) Please enter type and speed of modem: \c" read modem echo echo "(optional) Are you a sysop of a BBS system [yn] ? \c" read sys case "$sys" in y*|Y*) sysnm="" while [ -z "$sysnm" ] do echo echo "Please enter the Name of your Board: \c" read sysnm done sysno="" while [ -z "$sysno" ] do echo echo "Please enter the (data) telephone number, with area code: \c" read sysno done echo "Is this a METRO number [yn] ? \c" read met case $met in y*|Y*) sysno="$sysno METRO";; esac ;; esac echo echo "Enter desired terminal emulation. The most common choices are" echo "vt100, ansi, and vt52. If you have it, vt100 is reccomended." echo "many other terms are supported. If you're not sure what your" echo "exact termcap entry is, you may leave this blank for now." echo echo " term: \c" read term if [ -z "$term" ] then term=vt100 echo echo "By default your TERM is vt100. It can be changed at any time" echo "by editing your .profile for a different setting." fi shell="" while [ -z "$shell" ] do echo echo "Enter desired shell. The shells that are currently available" echo "are:" `cat /etc/shells` echo echo "Type just a return to get the standard Bourne shell. If you're" echo "not yet familiar with any unix shell, you can type 'm' to use" echo "the menu system instead." echo echo " shell: \c" read shell bbs=n if [ -z "$shell" ] then shell=STANDARD elif [ $shell = m ] then shell=STANDARD bbs=y fi if [ $shell. != STANDARD. ] then shell=`fgrep -x "$shell" /etc/shells` fi done sentry="" while [ -z "$sentry" ] do echo echo "The system normally will give you notices when another user logs" echo "in or out. You may elect not to see these if you prefer." echo echo "Would you like these reports [yn] ? \c" read sentry case $sentry in y*|Y*) sedstr="";; n*|N*) sedstr="s/sn -u/# &/";; *) sentry="";; esac done dir=/u/$login gid=1 # uid=`cut -d: -f3 /etc/passwd | sort -n | tail -1` # uid=`expr $uid + 1` uid=`tail -1 /etc/passwd | cut -d: -f3` uid=`/usr/local/lib/pbbs/nextid $uid` echo echo " login:" $login echo " name:" $full echo " FULL name:" $name echo " address:" $addr echo " city, etc:" $city echo " phone:" $phone if [ ! -z "$work" ] then echo "work phone:" $work fi echo " birthdate:" $bday if [ ! -z "$equip" ] then echo " equipment:" $equip fi if [ ! -z "$modem" ] then echo " modem:" $modem fi case "$sys" in y*|Y*) echo " BBS name:" $sysnm echo " BBS phone:" $sysno ;; esac echo " term:" $term if [ $bbs = y ] then echo " shell: PinkBBS" else echo " shell:" $shell fi echo " home dir:" $dir "(assigned by system)" echo " uid:" $uid "(assigned by system)" echo " gid:" $gid "(assigned by system)" echo echo "Check this info carefully one more time to be sure that it" echo "is all complete and correct." echo echo "is all the info ok [yn] ? \c" read response done if [ $shell. = STANDARD. ] then shell="" fi echo trap "" 1 2 3 15 echo "installing account ... \c" mail register <<RegiS Subject: New user: $login login: $login uid: $uid gid: $gid full name: $full home dir: $dir shell: $shell PinkBBS? $bbs term: $term name: $name address: $addr city, etc: $city phone: $phone work phone: $work birthdate: $bday equipment: $equip modem: $modem sysop? $sys BBS name: $sysnm BBS phone: $sysno RegiS /usr/local/lib/pbbs/stacct $login "$full" $uid $gid $dir $shell || exit 1 mkdir $dir if echo "$shell" | grep csh >/dev/null then sed -e "$sedstr" -e "/term=.*/s//term=$term/" /etc/stdlogin >$dir/.login chgrp $gid $dir $dir/.login chown $login $dir $dir/.login else sed -e "$sedstr" -e "/TERM=.*/s//TERM=$term/" /etc/stdprofile >$dir/.profile if [ $bbs. = y. ] then echo "\n# use menu system\nexec pbbs" >> $dir/.profile fi chgrp $gid $dir $dir/.profile chown $login $dir $dir/.profile fi #mailx -s "Welcome to SDF" $login < /usr/pub/sdf.welcome mail $login < /usr/pub/sdf.welcome echo "\nNew user \"$login\" created, name \"$full\"/\"$name\"." >>$file echo "$login" >>$regis echo "`date +%y-%m-%d` $login" >>$since echo "done" echo echo "When you log in, you will select a password. Remember, for it to" echo "be valid it must be at least 6 characters, and have at least one" echo "non-alphabetic character in it." echo echo "Logging out ... log back in under your new account now." stty -hupcl kill -9 0