version 1.20, 2011/11/17 14:29:51
|
version 1.27, 2015/01/03 02:45:22
|
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; |
use strict; |
|
|
=pod |
=pod |
Line 206 while ((!$got_passwd) && ($trial < $maxt
|
Line 207 while ((!$got_passwd) && ($trial < $maxt
|
&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". |
&mt('Please try again.')."\n"); |
&mt('Please try again.')."\n"); |
} else { |
} else { |
$secondpass = &get_password(&mt('Enter password a second time')); |
$secondpass = &get_password(&mt('Enter password a second time')); |
Line 359 if ($pbad) {
|
Line 360 if ($pbad) {
|
"\n"); |
"\n"); |
} |
} |
|
|
my $distro; |
my ($distro,$nostdin); |
if (open(PIPE,"perl distprobe|")) { |
if (open(PIPE,"perl distprobe|")) { |
$distro = <PIPE>; |
$distro = <PIPE>; |
close(PIPE); |
close(PIPE); |
} |
} |
if ($distro =~ /^ubuntu|debian/) { |
if ($distro =~ /^ubuntu|debian/) { |
|
$nostdin = 1; |
|
} elsif ($distro =~ /^suse([\d.]+)$/) { |
|
if ($1 > 12.2) { |
|
$nostdin = 1; |
|
} |
|
} elsif ($distro =~ /^sles(\d+)$/) { |
|
if ($1 > 11) { |
|
$nostdin = 1; |
|
} |
|
} |
|
if ($nostdin) { |
open(OUT,"|usermod -p `mkpasswd $passwd` $username"); |
open(OUT,"|usermod -p `mkpasswd $passwd` $username"); |
close(OUT); |
close(OUT); |
} else { |
} else { |
Line 443 use GDBM_File; # A simplistic key-value
|
Line 455 use GDBM_File; # A simplistic key-value
|
my $rolesref=&LONCAPA::locking_hash_tie("$udpath/roles.db",&GDBM_WRCREAT()); |
my $rolesref=&LONCAPA::locking_hash_tie("$udpath/roles.db",&GDBM_WRCREAT()); |
if (!$rolesref) { |
if (!$rolesref) { |
print(&mt('Error').' '. |
print(&mt('Error').' '. |
&mt('unable to tie roles db: [_1]'."$udpath/roles.db")."\n"); |
&mt('unable to tie roles db: [_1].',"$udpath/roles.db")."\n"); |
exit; |
exit; |
} |
} |
my $now = time; |
my $now = time; |
Line 476 $domrolesref->{$domkey}= &LONCAPA::escap
|
Line 488 $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 621 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 |