Diff for /loncom/lond between versions 1.419 and 1.422

version 1.419, 2009/07/31 02:20:12 version 1.422, 2009/08/18 20:08:13
Line 4052  sub put_domain_handler { Line 4052  sub put_domain_handler {
 }  }
 &register_handler("putdom", \&put_domain_handler, 0, 1, 0);  &register_handler("putdom", \&put_domain_handler, 0, 1, 0);
   
   #
   # Puts a piece of new data in a namespace db file at the domain level 
   # returns error if key already exists
   #
   # Parameters:
   #    $cmd      - The command that got us here.
   #    $tail     - Tail of the command (remaining parameters).
   #    $client   - File descriptor connected to client.
   # Returns
   #     0        - Requested to exit, caller should shut down.
   #     1        - Continue processing.
   #  Side effects:
   #     reply is written to $client.
   #
   sub newput_domain_handler {
       my ($cmd, $tail, $client)  = @_;
   
       my $userinput = "$cmd:$tail";
   
       my ($udom,$namespace,$what) =split(/:/,$tail,3);
       chomp($what);
       my $hashref = &tie_domain_hash($udom, "$namespace", &GDBM_WRCREAT(),
                                      "N", $what);
       if(!$hashref) {
           &Failure( $client, "error: ".($!+0)." tie(GDBM) Failed ".
                     "while attempting newputdom\n", $userinput);
           return 1;
       }
   
       my @pairs=split(/\&/,$what);
       foreach my $pair (@pairs) {
           my ($key,$value)=split(/=/,$pair);
           if (exists($hashref->{$key})) {
               &Failure($client, "key_exists: ".$key."\n",$userinput);
               return 1;
           }
       }
   
       foreach my $pair (@pairs) {
           my ($key,$value)=split(/=/,$pair);
           $hashref->{$key}=$value;
       }
   
       if (&untie_domain_hash($hashref)) {
           &Reply( $client, "ok\n", $userinput);
       } else {
           &Failure($client, "error: ".($!+0)." untie(GDBM) failed ".
                    "while attempting newputdom\n",
                    $userinput);
       }
       return 1;
   }
   &register_handler("newputdom", \&newput_domain_handler, 0, 1, 0);
   
 # Unencrypted get from the namespace database file at the domain level.  # Unencrypted get from the namespace database file at the domain level.
 # This function retrieves a keyed item from a specific named database in the  # This function retrieves a keyed item from a specific named database in the
 # domain directory.  # domain directory.
Line 4101  sub get_domain_handler { Line 4155  sub get_domain_handler {
 }  }
 &register_handler("getdom", \&get_domain_handler, 0, 1, 0);  &register_handler("getdom", \&get_domain_handler, 0, 1, 0);
   
   #
   #   Deletes a key in a user profile database.
   #  
   #   Parameters:
   #       $cmd                  - Command keyword (deldom).
   #       $tail                 - Command tail.  IN this case a colon
   #                               separated list containing:
   #                               the domain to which the database file belongs;  
   #                               the namespace (name of the database file);
   #                               & separated list of keys to delete.
   #       $client              - File open on client socket.
   # Returns:
   #     1   - Continue processing
   #     0   - Exit server.
   #
   #
   sub delete_domain_entry {
       my ($cmd, $tail, $client) = @_;
   
       my $userinput = "cmd:$tail";
   
       my ($udom,$namespace,$what) = split(/:/,$tail);
       chomp($what);
       my $hashref = &tie_domain_hash($udom, $namespace, &GDBM_WRCREAT(),
                                    "D",$what);
       if ($hashref) {
           my @keys=split(/\&/,$what);
           foreach my $key (@keys) {
               delete($hashref->{$key});
           }
           if (&untie_user_hash($hashref)) {
               &Reply($client, "ok\n", $userinput);
           } else {
               &Failure($client, "error: ".($!+0)." untie(GDBM) Failed ".
                       "while attempting deldom\n", $userinput);
           }
       } else {
           &Failure( $client, "error: ".($!+0)." tie(GDBM) Failed ".
                    "while attempting deldom\n", $userinput);
       }
       return 1;
   }
   &register_handler("deldom", \&delete_domain_entry, 0, 1, 0);
   
 #  #
 #  Puts an id to a domains id database.   #  Puts an id to a domains id database. 
Line 4199  sub get_id_handler { Line 4296  sub get_id_handler {
 }  }
 &register_handler("idget", \&get_id_handler, 0, 1, 0);  &register_handler("idget", \&get_id_handler, 0, 1, 0);
   
   sub dump_dom_with_regexp {
       my ($cmd, $tail, $client) = @_;
       my $userinput = "$cmd:$tail";
       my ($udom,$namespace,$regexp,$range)=split(/:/,$tail);
       if (defined($regexp)) {
           $regexp=&unescape($regexp);
       } else {
           $regexp='.';
       }
       my ($start,$end);
       if (defined($range)) {
           if ($range =~/^(\d+)\-(\d+)$/) {
               ($start,$end) = ($1,$2);
           } elsif ($range =~/^(\d+)$/) {
               ($start,$end) = (0,$1);
           } else {
               undef($range);
           }
       }
       my $hashref = &tie_domain_hash($udom, $namespace, &GDBM_READER());
       if ($hashref) {
           my $qresult='';
           my $count=0;
           while (my ($key,$value) = each(%$hashref)) {
               if ($regexp eq '.') {
                   $count++;
                   if (defined($range) && $count >= $end)   { last; }
                   if (defined($range) && $count <  $start) { next; }
                   $qresult.=$key.'='.$value.'&';
               } else {
                   my $unescapeKey = &unescape($key);
                   if (eval('$unescapeKey=~/$regexp/')) {
                       $count++;
                       if (defined($range) && $count >= $end)   { last; }
                       if (defined($range) && $count <  $start) { next; }
                       $qresult.="$key=$value&";
                   }
               }
           }
           if (&untie_user_hash($hashref)) {
               chop($qresult);
               &Reply($client, \$qresult, $userinput);
           } else {
               &Failure( $client, "error: ".($!+0)." untie(GDBM) Failed ".
                        "while attempting dump\n", $userinput);
           }
       } else {
           &Failure($client, "error: ".($!+0)." tie(GDBM) Failed ".
                   "while attempting dump\n", $userinput);
       }
       return 1;
   }
   &register_handler("dumpdom", \&dump_dom_with_regexp, 0, 1, 0);
   
 #  #
 # Puts broadcast e-mail sent by Domain Coordinator in nohist_dcmail database   # Puts broadcast e-mail sent by Domain Coordinator in nohist_dcmail database 
 #  #
Line 4408  sub dump_domainroles_handler { Line 4559  sub dump_domainroles_handler {
         $rolesfilter=&unescape($rolesfilter);          $rolesfilter=&unescape($rolesfilter);
  @roles = split(/\&/,$rolesfilter);   @roles = split(/\&/,$rolesfilter);
     }      }
                                                                                              
     my $hashref = &tie_domain_hash($udom, "nohist_domainroles", &GDBM_WRCREAT());      my $hashref = &tie_domain_hash($udom, "nohist_domainroles", &GDBM_WRCREAT());
     if ($hashref) {      if ($hashref) {
         my $qresult = '';          my $qresult = '';
         while (my ($key,$value) = each(%$hashref)) {          while (my ($key,$value) = each(%$hashref)) {
             my $match = 1;              my $match = 1;
             my ($start,$end) = split(/:/,&unescape($value));              my ($end,$start) = split(/:/,&unescape($value));
             my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,&unescape($key));              my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,&unescape($key));
             unless ($startfilter eq '.' || !defined($startfilter)) {              unless (@roles < 1) {
                 if ((defined($start)) && ($start >= $startfilter)) {                  unless (grep/^\Q$trole\E$/,@roles) {
                     $match = 0;                      $match = 0;
                       next;
                 }                  }
             }              }
             unless ($endfilter eq '.' || !defined($endfilter)) {              unless ($startfilter eq '.' || !defined($startfilter)) {
                 if ((defined($end)) && ($end <= $endfilter)) {                  if ((defined($start)) && ($start >= $startfilter)) {
                     $match = 0;                      $match = 0;
                       next;
                 }                  }
             }              }
             unless (@roles < 1) {              unless ($endfilter eq '.' || !defined($endfilter)) {
                 unless (grep/^\Q$trole\E$/,@roles) {                  if ((defined($end)) && (($end > 0) && ($end <= $endfilter))) {
                     $match = 0;                      $match = 0;
                       next;
                 }                  }
             }              }
             if ($match == 1) {              if ($match == 1) {
Line 4734  sub enrollment_enabled_handler { Line 4888  sub enrollment_enabled_handler {
 sub validate_instcode_handler {  sub validate_instcode_handler {
     my ($cmd, $tail, $client) = @_;      my ($cmd, $tail, $client) = @_;
     my $userinput = "$cmd:$tail";      my $userinput = "$cmd:$tail";
     my ($dom,$instcode,$owner) = split(/:/, $tail);      my ($dom,$instcode,$owner,$inststatus,$instseclist) = split(/:/, $tail);
     my $outcome=&localenroll::validate_instcode($dom,$instcode,$owner);      $instcode = &unescape($instcode);
       $owner = &unescape($owner);
       $inststatus = &unescape($inststatus);
       $instseclist = &unescape($instseclist);
       my $outcome=&localenroll::validate_instcode($dom,$instcode,$owner,
                                                   $inststatus,$instseclist);
     &Reply($client, \$outcome, $userinput);      &Reply($client, \$outcome, $userinput);
   
     return 1;      return 1;

Removed from v.1.419  
changed lines
  Added in v.1.422


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