version 1.49, 2001/08/24 19:25:46
|
version 1.53, 2001/10/23 04:38:45
|
Line 15
|
Line 15
|
# 03/15 Scott Harrison |
# 03/15 Scott Harrison |
# 03/24 Gerd Kortemeyer |
# 03/24 Gerd Kortemeyer |
# 04/02 Scott Harrison |
# 04/02 Scott Harrison |
# 05/11,05/28 Gerd Kortemeyer |
# 05/11,05/28,08/30 Gerd Kortemeyer |
|
# 9/30,10/22 Scott Harrison |
# |
# |
# based on "Perl Cookbook" ISBN 1-56592-243-3 |
# based on "Perl Cookbook" ISBN 1-56592-243-3 |
# preforker - server who forks first |
# preforker - server who forks first |
Line 366 sub make_new_child {
|
Line 367 sub make_new_child {
|
my $clientip=inet_ntoa($iaddr); |
my $clientip=inet_ntoa($iaddr); |
my $clientrec=($hostid{$clientip} ne undef); |
my $clientrec=($hostid{$clientip} ne undef); |
&logthis( |
&logthis( |
"<font color=yellow>INFO: Connect from $clientip ($hostid{$clientip})</font>"); |
"<font color=yellow>INFO: Connection $i, $clientip ($hostid{$clientip})</font>" |
|
); |
my $clientok; |
my $clientok; |
if ($clientrec) { |
if ($clientrec) { |
my $remotereq=<$client>; |
my $remotereq=<$client>; |
Line 470 sub make_new_child {
|
Line 472 sub make_new_child {
|
(crypt($upass,$contentpwd) eq $contentpwd); |
(crypt($upass,$contentpwd) eq $contentpwd); |
} elsif ($howpwd eq 'unix') { |
} elsif ($howpwd eq 'unix') { |
$contentpwd=(getpwnam($uname))[1]; |
$contentpwd=(getpwnam($uname))[1]; |
$pwdcorrect= |
my $pwauth_path="/usr/local/sbin/pwauth"; |
(crypt($upass,$contentpwd) eq $contentpwd); |
unless ($contentpwd eq 'x') { |
|
$pwdcorrect= |
|
(crypt($upass,$contentpwd) eq $contentpwd); |
|
} |
|
elsif (-e $pwauth_path) { |
|
open PWAUTH, "|$pwauth_path" or |
|
die "Cannot invoke authentication"; |
|
print PWAUTH "$uname\n$upass\n"; |
|
close PWAUTH; |
|
$pwdcorrect=!$?; |
|
} |
} elsif ($howpwd eq 'krb4') { |
} elsif ($howpwd eq 'krb4') { |
$pwdcorrect=( |
$pwdcorrect=( |
Authen::Krb4::get_pw_in_tkt($uname,"", |
Authen::Krb4::get_pw_in_tkt($uname,"", |
$contentpwd,'krbtgt',$contentpwd,1, |
$contentpwd,'krbtgt',$contentpwd,1, |
$upass) == 0); |
$upass) == 0); |
} elsif ($howpwd eq 'localauth') { |
} elsif ($howpwd eq 'localauth') { |
$pwdcorrect=&localauth::localauth($uname,$upass, |
$pwdcorrect=&localauth::localauth($uname,$upass, |
$contentpwd); |
$contentpwd); |
} |
} |
Line 567 sub make_new_child {
|
Line 579 sub make_new_child {
|
{ |
{ |
my $pf = IO::File->new(">$passfilename"); |
my $pf = IO::File->new(">$passfilename"); |
print $pf "internal:$ncpass\n"; |
print $pf "internal:$ncpass\n"; |
} |
} |
print $client "ok\n"; |
print $client "ok\n"; |
} elsif ($umode eq 'none') { |
} elsif ($umode eq 'localauth') { |
|
{ |
|
my $pf = IO::File->new(">$passfilename"); |
|
print $pf "localauth:$npass\n"; |
|
} |
|
print $client "ok\n"; |
|
} elsif ($umode eq 'unix') { |
|
{ |
|
my $execpath="$perlvar{'lonDaemons'}/". |
|
"lcuseradd"; |
|
my $se = IO::File->new("|$execpath"); |
|
print $se "$uname\n"; |
|
print $se "$npass\n"; |
|
print $se "$npass\n"; |
|
my $pf = IO::File->new(">$passfilename"); |
|
print $pf "unix:\n"; |
|
} |
|
} elsif ($umode eq 'none') { |
{ |
{ |
my $pf = IO::File->new(">$passfilename"); |
my $pf = IO::File->new(">$passfilename"); |
print $pf "none:\n"; |
print $pf "none:\n"; |
Line 1105 sub make_new_child {
|
Line 1134 sub make_new_child {
|
} |
} |
if ($ulsout eq '') { $ulsout='empty'; } |
if ($ulsout eq '') { $ulsout='empty'; } |
print $client "$ulsout\n"; |
print $client "$ulsout\n"; |
|
# ------------------------------------------------------------------ Hanging up |
|
} elsif (($userinput =~ /^exit/) || |
|
($userinput =~ /^init/)) { |
|
&logthis( |
|
"Client $clientip ($hostid{$clientip}) hanging up: $userinput"); |
|
print $client "bye\n"; |
|
last; |
# ------------------------------------------------------------- unknown command |
# ------------------------------------------------------------- unknown command |
} else { |
} else { |
# unknown command |
# unknown command |