version 1.18, 2011/03/28 21:13:41
|
version 1.23, 2012/11/20 19:00:52
|
Line 96 use Term::ReadKey;
|
Line 96 use Term::ReadKey;
|
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use DBI; |
use DBI; |
|
use Storable qw(nfreeze); |
|
use strict; |
|
|
=pod |
=pod |
|
|
Line 122 coordinator.
|
Line 124 coordinator.
|
|
|
=cut |
=cut |
|
|
my ($username,$domain)=(@ARGV); |
|
my $lang = &Apache::lonlocal::choose_language(); |
my $lang = &Apache::lonlocal::choose_language(); |
&Apache::lonlocal::get_language_handle(undef,$lang); |
&Apache::lonlocal::get_language_handle(undef,$lang); |
print"\n"; |
print"\n"; |
Line 166 if (-d "/home/$username") {
|
Line 167 if (-d "/home/$username") {
|
$is_user = 1; |
$is_user = 1; |
} |
} |
|
|
if (is_user) { |
if ($is_user) { |
print(&mt('**** ERROR **** [_1] is already a linux operating system user.', |
print(&mt('**** ERROR **** [_1] is already a linux operating system user.', |
$username)."\n\n". |
$username)."\n\n". |
&mt('This script will only automatically generate new users.')."\n". |
&mt('This script will only automatically generate new users.')."\n". |
Line 191 unless (($go_on eq '') || ($go_on =~ /^\
|
Line 192 unless (($go_on eq '') || ($go_on =~ /^\
|
} |
} |
print "\n"; |
print "\n"; |
|
|
my ($got_passwd,$firstpass,$secondpass); |
my ($got_passwd,$firstpass,$secondpass,$passwd); |
my $maxtries = 10; |
my $maxtries = 10; |
my $trial = 0; |
my $trial = 0; |
while ((!$got_passwd) && ($trial < $maxtries)) { |
while ((!$got_passwd) && ($trial < $maxtries)) { |
Line 199 while ((!$got_passwd) && ($trial < $maxt
|
Line 200 while ((!$got_passwd) && ($trial < $maxt
|
if (length($firstpass) < 6) { |
if (length($firstpass) < 6) { |
print(&mt('Password too short.')."\n". |
print(&mt('Password too short.')."\n". |
&mt('Please choose a password with at least six characters.')."\n". |
&mt('Please choose a password with at least six characters.')."\n". |
i &mt('Please try again.')."\n"); |
&mt('Please try again.')."\n"); |
} elsif (length($firstpass) > 30) { |
} elsif (length($firstpass) > 30) { |
print(&mt('Password too long.')."\n". |
print(&mt('Password too long.')."\n". |
&mt('Please choose a password with no more than thirty characters.')."\n". |
&mt('Please choose a password with no more than thirty characters.')."\n". |
i &mt('Please try again.')."\n"); |
&mt('Please try again.')."\n"); |
} else { |
} else { |
my $pbad=0; |
my $pbad=0; |
foreach (split(//,$passwd)) {if ((ord($_)<32)||(ord($_)>126)){$pbad=1;}} |
foreach (split(//,$firstpass)) {if ((ord($_)<32)||(ord($_)>126)){$pbad=1;}} |
if ($pbad) { |
if ($pbad) { |
print(&mt('Password contains invalid characters.')."\n". |
print(&mt('Password contains invalid characters.')."\n". |
&mt('Password must consist of standard ASCII characters')."\n". |
&mt('Password must consist of standard ASCII characters')."\n". |
Line 352 if (-d "/home/$username") {
|
Line 353 if (-d "/home/$username") {
|
|
|
# Process password (taint-check, then pass to the UNIX passwd command). |
# Process password (taint-check, then pass to the UNIX passwd command). |
$username =~ s/\W//g; # an extra filter, just to be sure |
$username =~ s/\W//g; # an extra filter, just to be sure |
$pbad = 0; |
my $pbad = 0; |
foreach (split(//,$passwd)) {if ((ord($_)<32)||(ord($_)>126)){$pbad=1;}} |
foreach (split(//,$passwd)) {if ((ord($_)<32)||(ord($_)>126)){$pbad=1;}} |
if ($pbad) { |
if ($pbad) { |
print(&mt('Password must consist of standard ASCII characters.'). |
print(&mt('Password must consist of standard ASCII characters.'). |
Line 476 $domrolesref->{$domkey}= &LONCAPA::escap
|
Line 477 $domrolesref->{$domkey}= &LONCAPA::escap
|
system('/bin/chown',"www:www","$dompath/nohist_domainroles.db"); # Must be writeable by httpd process. |
system('/bin/chown',"www:www","$dompath/nohist_domainroles.db"); # Must be writeable by httpd process. |
system('/bin/chown',"www:www","$dompath/nohist_domainroles.db.lock"); |
system('/bin/chown',"www:www","$dompath/nohist_domainroles.db.lock"); |
|
|
|
# Log with domainconfiguser in nohist_rolelog.db |
|
my $domconfiguser = $domain.'-domainconfig'; |
|
my $subdir = $domconfiguser; |
|
$subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/; |
|
$subdir .= "/$domconfiguser"; |
|
|
|
if (-d "$dompath/$subdir") { |
|
my $rolelogref = &LONCAPA::locking_hash_tie("$dompath/$subdir/nohist_rolelog.db",&GDBM_WRCREAT()); |
|
my $domlogkey = &LONCAPA::escape($now.'00000'.$$.'000000'); |
|
my $storehash = { |
|
role => 'dc', |
|
start => $now, |
|
end => 0, |
|
context => 'server', |
|
}; |
|
my $domlogvalue = { |
|
'exe_uname' => '', |
|
'exe_udom' => $domain, |
|
'exe_time' => $now, |
|
'exe_ip' => '127.0.0.1', |
|
'delflag' => '', |
|
'logentry' => $storehash, |
|
'uname' => $username, |
|
'udom' => $domain, |
|
}; |
|
$rolelogref->{$domlogkey}=&freeze_escape($domlogvalue); |
|
&LONCAPA::locking_hash_untie($rolelogref); |
|
|
|
system('/bin/chown',"www:www","$dompath/$subdir/nohist_rolelog.db"); # Must be writeable by httpd process. |
|
system('/bin/chown',"www:www","$dompath/$subdir/nohist_rolelog.db.lock"); |
|
} else { |
|
print(&mt('Failed to log role creation as the path to the directory: "[_1]" does not exist.',"$dompath/$subdir/")."\n". |
|
&mt('Please run UPDATE from the top level directory of the extracted LON-CAPA tarball, i.e., two levels up from this current directory (loncom/build).')); |
|
} |
|
|
#Update allusers MySQL table |
#Update allusers MySQL table |
|
|
print(&mt('Adding new user to allusers table.')."\n"); |
print(&mt('Adding new user to allusers table.')."\n"); |
Line 574 sub get_password {
|
Line 610 sub get_password {
|
return $newpasswd; |
return $newpasswd; |
} |
} |
|
|
|
sub freeze_escape { |
|
my ($value)=@_; |
|
if (ref($value)) { |
|
$value=&nfreeze($value); |
|
return '__FROZEN__'.&LONCAPA::escape($value); |
|
} |
|
return &LONCAPA::escape($value); |
|
} |
|
|
=pod |
=pod |
|
|
=head1 AUTHOR |
=head1 AUTHOR |