#!/usr/local/bin/perl # ovid account application thinger [MODDED FOR IN-HOUSE USER ACCOUNT ADDS] # justin mccarthy, 3/99 # $ENV{'ORACLE_HOME'}="/opt/oracle_client"; #@my_datetimes = localtime(); #$my_datetime = "$my_datetimes[5] $my_datetimes[4] $my_datetimes[3] $my_datetimes[2]:$my_datetimes[1]"; $my_datetime = `/usr/local/bin/timestamp`; chop $my_datetime; use CGI_Lite; use DBI; $config_file="/usr/local/share/acctadd/admin.cfg"; open(CONF,$config_file); while () { @config_values=split /\n/; foreach $config_value (@config_values) { if ($config_value=~/^#/ || $config_value=~/^\ /) {next;} @config_fields=split /\=/,$config_value; $config{$config_fields[0]}=$config_fields[1]; } } print "Content-type: text/html\n\n"; #open(HEADER,"applicationresponseheader.html"); open(HEADER,"newconfirmheader.html"); #open(FOOTER,"applicationresponsefooter.html"); open(FOOTER,"newconfirmfooter.html"); while (
) { if (/(.*)\<\!\-\-\#include virtual=("|)(\S*)".*-->(.*)\n/) { open(INC,"/webdocs$3"); print "$1 $4"; while () {print;} close INC; } else { print; } } print "Thank you for submitting your account application."; $dbmain=$config{"database"}; $table=$config{"table"}; $apply_text=$config{"appfile"}; $notify=$config{"notify"}; $notify=~s/\@/\\\@/g; open(LOG,">>/usr/local/share/logs/admin.log"); $date=`date +"%D %T"`; chomp $date; #$Option_ref = Pg::conndefaults(); #($key, $val); while () { @values=split /\&/; foreach $value (@values) { @fields=split /\=/,$value; $fields[1]=url_decode($fields[1]); $fields[1]=~s/'/\\'/gi; $fields[1]=~tr/\+/\ /; $vars{$fields[0]}=$fields[1]; } } #$conn = Pg::connectdb("dbname=$dbmain"); #die $conn->errorMessage unless PGRES_CONNECTION_OK eq $conn->status; $dbh=DBI->connect("dbi:Oracle:host=128.151.23.1;sid=oraminer","ovidadmin","ovidadmin") or die "Couldn't connect or Oracle: ".DBI->errstr; #open(INFO,">/tmp/$vars{\"Last_Name\"}.info"); $addfile="/usr/local/share/acctadd/$vars{\"Last_Name\"}_$vars{\"First_Name\"}.add"; $printfile="/usr/local/share/acctadd/$vars{\"Last_Name\"}_$vars{\"First_Name\"}.print"; $addfile=~s/ /_/g; $printfile=~s/ /_/g; open(ADDME,">$addfile"); open(PRINT,">$printfile"); #open(INFO,">/dev/null"); #open(PRINT,">/dev/null"); #open(PRINT, "|/bin/lp -o nobanner -d mislaser"); #open(PRINT, "|/usr/ucb/lpr -P mislaser -h"); $password=`/usr/local/bin/npwgen`; $password=~/([\w\d]*)/; $password=$1; #foreach $key (keys %vars) { # print INFO "$key = $vars{$key}
\n"; #} #close INFO; $first="\L$vars{\"First_Name\"}\E"; $last="\L$vars{\"Last_Name\"}\E"; $tmp_last=$last; $tmp_first=$first; $tmp_first=~s/'//g; $tmp_first=~/^(\w)/; $username=$1; $tmp_last=~s/'//g; $tmp_last=~/(\w{1,7})/; $username=$username.$1; open(PASSWD,"/etc/passwd"); while () { $exist{(split /:/)[0]}="yes"; }; $num=1; while ($exist{$username}) { # print "
$username exists
"; if (length $username >=8 || $num>1) { chop $username}; $username=$username.$num; $num++; } $vars{"First_Name"}=~s/\\//g; $vars{"Last_Name"}=~s/\\//g; $vars{"Address1"}=~s/\\//g; $vars{"Address2"}=~s/\\//g; $vars{"City"}=~s/\\//g; $vars{"State"}=~s/\\//g; $vars{"Zip"}=~s/\\//g; if ($vars{"salutation"}=~/\./) { $name=$vars{"salutation"}." ".$vars{"First_Name"}." ".$vars{"Last_Name"}; $greeting=$vars{"salutation"}." ".$vars{"Last_Name"}; } else { $name=$vars{"First_Name"}." ".$vars{"Last_Name"}; $greeting=$name; } if ($vars{"Box"}=~/\S/) { $address="Medical center box ".$vars{"Box"}; $box=1; } if ($vars{"Address1"}=~/\S/ && !($address=~/\S/)) { $address=$vars{"Address1"}; } if ($vars{"Address2"}=~/\S/ && !($address=~/\S/)) { $address=$address."\n\t".$vars{"Address2"}; } $miracle_net=$vars{"mnet"}; $last_line=""; if ($vars{"City"}=~/\S/) { $last_line=$vars{"City"}; } if ($vars{"State"}=~/\S/) { $last_line=$last_line.", ".$vars{"State"}; } if ($vars{"Zip"}=~/\S/) { $last_line=$last_line." ".$vars{"Zip"}; } if ($box==1) { $last_line=""; } $saltuation=$vars{"salutation"}; $first_name=$vars{"First_Name"}; $last_name=$vars{"Last_Name"}; $addr1=$vars{"Address1"}; $addr2=$vars{"Address2"}; $city=$vars{"City"}; $state=$vars{"State"}; $zip=$vars{"Zip"}; $email=$vars{"Email"}; $status=$vars{"Status"}; $beef=$status; $dept=$vars{"Department"}; $box=$vars{"Box"}; $phone=$vars{"Phone"}; $fax=$vars{"Fax"}; $phone2=$vars{"Phone2"}; $full_address="\t$miracle_net\n\n\n\t$name\n\t$address\n\t$last_line"; open(APPLY,"$apply_text"); while() { s/ADDRESS/$full_address/; s/GREETING/$greeting/; s/USERNAME/$username/; s/EMAIL/$email/; s/PHONE/$phone/; s/DATETIME/$my_datetime/; s/DEPT/$dept/; s/FAX/$fax/; s/PHON2/$phone2/; print PRINT; } close PRINT; if (!$miracle_net=~/\S/) { $miracle_net="none";} #if ($status=/^rr/ && !($status=~/rrl/)) { # $status=~/^r(.*)/; # $status=$1; #} print ADDME "$username\n$first_name\n$last_name\n$status\n$email\n$miracle_net\ncreated_by_apply\n\n"; close ADDME; $last_name=~s/'/\\'/g; $first_name=~s/'/\\'/g; #$query="INSERT INTO $table VALUES ('$salutation','$last_name','$first_name','$username','$addr1','$addr2','$city','$state','$zip','$phone','$email','$dept','$box','$status','$miracle_net','0','','','');"; #$result=$conn->exec("$query"); $sth=$dbh->prepare("INSERT INTO USERS VALUES ('$salutation','$last_name','$first_name','$username','$addr1','$addr2','$city','$state','$zip','$phone','$email','$dept','$box','$status','$miracle_net','0','','','')"); $sth->execute(); $sth->finish(); print LOG "$date APPLY $username [$first_name $last_name, $email, $status]\n"; close LOG; #die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus; # Removed temporarily while waiting for new email monitor. #`echo "User with login $username has requested a new acount [Check printer]"|mailx -s "New account request [Check printer]" $notify`; while (