remove Prot.pm, sort %valid fields
[spider.git] / perl / DXDb.pm
index 9251bdfdaa8ed084567b54522caba2b35dedba65..5d96e6cf2029db4ad798a699b350ff1f877ef392 100644 (file)
@@ -21,40 +21,34 @@ $dbbase = "$main::root/db";         # where all the databases are kept;
 %avail = ();                                   # The hash contains a list of all the databases
 %valid = (
                  accesst => '9,Last Accs Time,atime',
+                 allowread => '9,Allowed read,parray',
+                 allowupd => '9,Allow upd,parray',
+                 atemplate => '9,App Templates,parray',
+                 cal => '0,No Key txt',
+                 chain => '0,Search these,parray',
                  createt => '9,Create Time,atime',
-                 lastt => '9,Last Upd Time,atime',
-                 name => '0,Name',
                  db => '9,DB Tied hash',
-                 remote => '0,Remote Database',
-                 pre => '0,Heading txt',
-                 post => '0,Tail txt',
-                 chain => '0,Search these,parray',
-                 disable => '0,Disabled?,yesno',
-                 nf => '0,Not Found txt',
-                 cal => '0,No Key txt',
-                 allowread => '9,Allowed read,parray',
                  denyread => '9,Deny read,parray',
-                 allowupd => '9,Allow upd,parray',
                  denyupd => '9,Deny upd,parray',
+                 disable => '0,Disabled?,yesno',
                  fwdupd => '9,Forw upd to,parray',
-                 template => '9,Upd Templates,parray',
-                 te => '9,End Upd txt',
-                 tae => '9,End App txt',
-                 atemplate => '9,App Templates,parray',
                  help => '0,Help txt,parray',
+                 lastt => '9,Last Upd Time,atime',
                  localcmd => '0,Local Command',
+                 name => '0,Name',
+                 nf => '0,Not Found txt',
+                 post => '0,Tail txt',
+                 pre => '0,Heading txt',
+                 remote => '0,Remote Database',
+                 tae => '9,End App txt',
+                 te => '9,End Upd txt',
+                 template => '9,Upd Templates,parray',
                 );
 
 $lastprocesstime = time;
 $nextstream = 0;
 %stream = ();
 
-use vars qw($VERSION $BRANCH);
-$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
-$main::build += $VERSION;
-$main::branch += $BRANCH;
-
 # allocate a new stream for this request
 sub newstream
 {
@@ -156,6 +150,10 @@ sub getkey
        my $key = uc shift;
        my $value;
 
+       # massage the key
+       $key =~ s/[\@\$\&\%\*]+//g;
+       $key =~ s/^[\.\/]+//g;
+       
        # make sure we are open
        $self->open;
        if ($self->{localcmd}) {
@@ -240,67 +238,58 @@ sub normal
 #
 sub process
 {
-       my ($dxchan, $line) = @_;
-
-       # this is periodic processing
-       if (!$dxchan || !$line) {
-               if ($main::systime - $lastprocesstime >= 60) {
-                       if (%avail) {
-                               for (values %avail) {
-                                       if ($main::systime - $_->{accesst} > $opentime) {
-                                               $_->close;
-                                       }
+       if ($main::systime - $lastprocesstime >= 60) {
+               if (%avail) {
+                       for (values %avail) {
+                               if ($main::systime - $_->{accesst} > $opentime) {
+                                       $_->close;
                                }
                        }
-                       $lastprocesstime = $main::systime;
                }
-               return;
+               $lastprocesstime = $main::systime;
        }
+}
 
-       my @f = split /\^/, $line;
-       my ($pcno) = $f[0] =~ /^PC(\d\d)/; # just get the number
+sub handle_37
+{              
 
-       # route out ones that are not for us
-       if ($f[1] eq $main::mycall) {
-               ;
-       } else {
-               $dxchan->route($f[1], $line);
-               return;
-       }
+}
 
- SWITCH: {
-               if ($pcno == 37) {              # probably obsolete
-                       last SWITCH;
-               }
+sub handle_44
+{      
+       my $self = shift;
 
-               if ($pcno == 44) {              # incoming DB Request
-                       my @in = DXCommandmode::run_cmd($dxchan, "dbshow $f[4] $f[5]");
-                       sendremote($dxchan, $f[2], $f[3], @in);
-                       last SWITCH;
-               }
+       # incoming DB Request
+       my @in = DXCommandmode::run_cmd($self, "dbshow $_[4] $_[5]");
+       sendremote($self, $_[2], $_[3], @in);
+}
 
-               if ($pcno == 45) {              # incoming DB Information
-                       my $n = getstream($f[3]);
-                       if ($n) {
-                               my $mchan = DXChannel->get($n->{call});
-                               $mchan->send($f[2] . ":$f[4]") if $mchan;
-                       }
-                       last SWITCH;
-               }
+sub handle_45
+{              
+       my $self = shift;
 
-               if ($pcno == 46) {              # incoming DB Complete
-                       delstream($f[3]);
-                       last SWITCH;
-               }
+       # incoming DB Information
+       my $n = getstream($_[3]);
+       if ($n) {
+               my $mchan = DXChannel::get($n->{call});
+               $mchan->send($_[2] . ":$_[4]") if $mchan;
+       }
+}
 
-               if ($pcno == 47) {              # incoming DB Update request
-                       last SWITCH;
-               }
+sub handle_46
+{              
+       my $self = shift;
 
-               if ($pcno == 48) {              # incoming DB Update request 
-                       last SWITCH;
-               }
-       }       
+       # incoming DB Complete
+       delstream($_[3]);
+}
+
+sub handle_47
+{
+}
+
+sub handle_48
+{
 }
 
 # send back a trache of data to the remote