Diff for /loncom/build/make_domain_coordinator.pl between versions 1.18 and 1.22

version 1.18, 2011/03/28 21:13:41 version 1.22, 2012/08/17 22:43:03
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/;
   
   my $rolelogref = &LONCAPA::locking_hash_tie("$dompath/$subdir/$domconfiguser/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");
   
 #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 604  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

Removed from v.1.18  
changed lines
  Added in v.1.22


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>