added some extra cases for IOTA and QSL detection on sh/dx
[spider.git] / perl / DXDb.pm
index ab37f85291010d3ab951336a6a8d8b93dd1329af..25e7c0827d3f0d2d0d7fd7f30d32c59ab60640ca 100644 (file)
@@ -21,12 +21,28 @@ $opentime = 5*60;                           # length of time a database stays open after last access
 $dbbase = "$main::root/db";            # where all the databases are kept;
 %avail = ();                                   # The hash contains a list of all the databases
 %valid = (
-                 accesst => '9,Last Access Time,atime',
+                 accesst => '9,Last Accs Time,atime',
                  createt => '9,Create Time,atime',
-                 lastt => '9,Last Update 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',
+                 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',
                 );
 
 $lastprocesstime = time;
@@ -70,9 +86,8 @@ sub load
 # save all the database descriptors
 sub save
 {
-       my $date = cldatetime($main::systime);
-       
-       writefilestr($dbbase, "dbs", "pl", \%avail, "#\n# database descriptor file\n# Don't alter this by hand unless you know what you are doing\n# last modified $date\n#\n");
+       closeall();
+       writefilestr($dbbase, "dbs", "pl", \%avail);
 }
 
 # get the descriptor of the database you want.
@@ -85,7 +100,7 @@ sub getdesc
 
        # search for a partial if not found direct
        unless ($r) {
-               for (values %avail) {
+               for (sort { $a->{name} cmp $b->{name} }values %avail) {
                        if ($_->{name} =~ /^$name/) {
                                $r = $_;
                                last;
@@ -112,7 +127,8 @@ sub close
 {
        my $self = shift;
        if ($self->{db}) {
-               untie $self->{db};
+               undef $self->{db};
+               delete $self->{db};
        }
 }
 
@@ -164,8 +180,10 @@ sub new
        my $self = bless {};
        my $name = shift;
        my $remote = shift;
+       my $chain = shift;
        $self->{name} = lc $name;
        $self->{remote} = uc $remote if $remote;
+       $self->{chain} = $chain if $chain && ref $chain;
        $self->{accesst} = $self->{createt} = $self->{lastt} = $main::systime;
        $avail{$self->{name}} = $self;
        mkdir $dbbase, 02775 unless -e $dbbase;
@@ -292,6 +310,14 @@ sub sendremote
        $dxchan->send(DXProt::pc46($main::mycall, $tonode, $stream));
 }
 
+# print a value from the db reference
+sub print
+{
+       my $self = shift;
+       my $s = shift;
+       return $self->{$s} ? $self->{$s} : undef; 
+} 
+
 # various access routines
 
 #