update html docs
[spider.git] / html / adminmanual-6.html
index 2f6d3ed8b67a72bea60e27168aaeb9c86d4d29dd..ad0f1e54b97381c411eba50ab8885c62ee32d13b 100644 (file)
 <HTML>
 <HEAD>
  <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
- <TITLE>The DXSpider Installation and Administration Manual : Information, files and useful programs</TITLE>
+ <TITLE>The DXSpider Installation and Administration Manual: Filtering (Old Style upto v1.44)</TITLE>
  <LINK HREF="adminmanual-7.html" REL=next>
  <LINK HREF="adminmanual-5.html" REL=previous>
  <LINK HREF="adminmanual.html#toc6" REL=contents>
+<link rel=stylesheet href="style.css" type="text/css" title="default stylesheet">
 </HEAD>
 <BODY>
 <A HREF="adminmanual-7.html">Next</A>
 <A HREF="adminmanual-5.html">Previous</A>
 <A HREF="adminmanual.html#toc6">Contents</A>
 <HR>
-<H2><A NAME="s6">6. Information, files and useful programs</A></H2>
-
-<H2><A NAME="ss6.1">6.1 MOTD</A>
-</H2>
-
-<P>One of the more important things a cluster sysop needs to do is to get information to his users.  The simplest way to do this is to have a banner that is sent to the user on login.  This is know as a "message of the day" or "motd".  To set this up, simply create a file in /spider/data called motd and edit it to say whatever you want.  It is purely a text file and will be sent automatically to anyone logging in to the cluster.
-<P>
-<H2><A NAME="ss6.2">6.2 Downtime message</A>
-</H2>
-
-<P>If for any reason the cluster is down, maybe for upgrade or maintenance but the machine is still running, a message can be sent to the user advising them of the fact.  This message lives in the /spider/data directory and is called "offline".  Simply create the file and edit it to say whatever you wish.  This file will be sent to a user attempting to log into the cluster when DXSpider is not actually running.
-<P>
-<H2><A NAME="ss6.3">6.3 Other text messages</A>
-</H2>
-
-<P>You can set other text messages to be read by the user if they input the file name.  This could be for news items or maybe information for new users.  To set this up, make a directory under /spider called <EM>packclus</EM>.  Under this directory you can create files called <EM>news</EM> or <EM>newuser</EM> for example.  In fact you can create files with any names you like.  These can be listed by the user with the command ....
+<H2><A NAME="s6">6. Filtering (Old Style upto v1.44)</A></H2>
+
+<P>Filters can be set for spots, announcements and WWV.  You will find the 
+directories for these under /spider/filter.  You will find some examples in 
+the directories with the suffix <EM>.issue</EM>.  There are two types of 
+filter, one for incoming information and one for outgoing information. 
+Outgoing filters are in the form <EM>CALLSIGN.pl</EM> and incoming filters 
+are in the form <EM>in_CALLSIGN.pl</EM>.  Filters can be set for both nodes 
+and users.
+<P>
+<P>All filters work in basically the same way.  There are several elements 
+delimited by commas.  There can be many lines in the filter and they are 
+read from the top by the program.  When writing a filter you need to think 
+carefully about just what you want to achieve.  You are either going to write 
+a filter to <EM>accept</EM> or to <EM>reject</EM>.  Think of a filter as 
+having 2 main elements.  For a reject filter, you would have a line or multiple 
+lines rejecting the things you do not wish to receive and then a default line
+accepting everything else that is not included in the filter.  Likewise, for an
+accept filter, you would have a line or multiple lines accepting the things you 
+wish to receive and a default line rejecting everthing else.
+<P>
+<P>In the example below, a user requires a filter that would only return SSB spots
+posted in Europe on the HF bands.  This is achieved by first rejecting the CW 
+section of each HF band and rejecting all of VHF, UHF etc based on frequency.
+Secondly, a filter rule is set based on CQ zones to only accept spots posted in
+Europe.  Lastly, a default filter rule is set to reject anything outside the filter.
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-show/files
+$in = [
+        [ 0, 0, 'r', # reject all CW spots
+                [
+                1800.0, 1850.0,
+                3500.0, 3600.0,
+                7000.0, 7040.0,
+                14000.0, 14100.0,
+                18068.0, 18110.0,
+                21000.0, 21150.0,
+                24890.0, 24930.0,
+                28000.0, 28180.0,
+                30000.0, 49000000000.0,
+                ] ,1 ],
+        [ 1, 11, 'n', [ 14, 15, 16, 20, 33, ], 15 ], #accept EU
+        [ 0, 0, 'd', 0, 1 ], # 1 = want, 'd' = everything else
+];
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>They can be read by the user by typing the command ....
 <P>
-<BLOCKQUOTE><CODE>
-<PRE>
-type news
-</PRE>
-</CODE></BLOCKQUOTE>
-<P>If the file they want to read is called <EM>news</EM>.  You could also set an alias for this in the Alias file to allow them just to type <EM>news</EM>
+<P>The actual elements of each filter are described more fully in the following
+sections.
 <P>
-<P>You can also store other information in this directory, either directly or nested under directories.  One use for this would be to store DX bulletins such as the OPDX bulletins.  These can be listed and read by the user.  To keep things tidy, make a directory under /spider/packclus called <EM>bulletins</EM>.  Now copy any OPDX or similar bulletins into it.  These can be listed by the user in the same way as above using the <EM>show/files</EM> command with an extension for the bulletins directory you have just created, like this ....
+<H2><A NAME="ss6.1">6.1 Spots</A>
+</H2>
+
+<P>The elements of the Spot filter are ....
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-show/files bulletins
+[action, field_no, sort, possible_values, hops]
 </PRE>
 </CODE></BLOCKQUOTE>
 <P>
-<P>An example would look like this ....
+<P>There are 3 elements here to look at.  Firstly, the action element.  This is 
+very simple and only 2 possible states exist, accept (1) or drop (0).
+<P>
+<P>The second element is the field_no.  There are 13 possiblities to choose from 
+here ....
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-sh/files
-bulletins      DIR 20-Dec-1999 1715Z news          1602 14-Dec-1999 1330Z
+      0 = frequency
+      1 = call
+      2 = date in unix format
+      3 = comment
+      4 = spotter
+      5 = spotted dxcc country
+      6 = spotter's dxcc country
+      7 = origin
+      8 = spotted itu
+      9 = spotted cq
+      10 = spotter's itu
+      11 = spotter's cq
+      12 = callsign of the channel on which the spot has appeared
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>You can see that in the files area (basically the packclus directory) there is a file called <EM>news</EM> and a directory called <EM>bulletins</EM>.  You can also see that dates they were created.  In the case of the file <EM>news</EM>, you can also see the time it was last modified, a good clue as to whether the file has been updated since you last read it.  To read the file called <EM>news</EM> you would simply issue the command ....
+<P>
+<P>The third element tells us what to expect in the fourth element.  There are 
+4 possibilities ....
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-type news
+     n - numeric list of numbers e.g. [ 1,2,3 ]
+     r - ranges of pairs of numbers e.g. between 2 and 4 or 10 to 17 - [ 2,4, 10,17 ]
+     a - an alphanumeric regex
+     d - the default rule
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>To look what is in the bulletins directory you issue the command ....
+<P>
+<P>The fifth element is simply the hops to set in this filter.  This would only 
+be used if the filter was for a node of course and overrides the hop count in
+hop_table.pl.
+<P>
+<P>So, let's look at an example spot filter.  It does not matter in the example 
+who the filter is to be used for.  So, what do we need in the filter?  We need 
+to filter the spots the user/node requires and also set a default rule for 
+anything else outside the filter.  Below is a simple filter that stops spots 
+arriving from outside Europe.
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-show/files bulletins
-opdx390      21381 29-Nov-1999 1621Z opdx390.1     1670 29-Nov-1999 1621Z
-opdx390.2     2193 29-Nov-1999 1621Z opdx391      25045 29-Nov-1999 1621Z  
-opdx392      35969 29-Nov-1999 1621Z opdx393      15023 29-Nov-1999 1621Z  
-opdx394      33429 29-Nov-1999 1621Z opdx394.1     3116 29-Nov-1999 1621Z  
-opdx395      24319 29-Nov-1999 1621Z opdx396      32647 29-Nov-1999 1621Z
-opdx396.1     5537 29-Nov-1999 1621Z opdx396.2     6242 29-Nov-1999 1621Z
-opdx397      18433 29-Nov-1999 1621Z opdx398      19961 29-Nov-1999 1621Z  
-opdx399      17719 29-Nov-1999 1621Z opdx400      19600 29-Nov-1999 1621Z
-opdx401      27738 29-Nov-1999 1621Z opdx402      18698 29-Nov-1999 1621Z
-opdx403      24994 29-Nov-1999 1621Z opdx404      15685 29-Nov-1999 1621Z
-opdx405      13984 29-Nov-1999 1621Z opdx405.1     4166 29-Nov-1999 1621Z
-opdx406      28934 29-Nov-1999 1621Z opdx407      24153 29-Nov-1999 1621Z
-opdx408      15081 29-Nov-1999 1621Z opdx409      23234 29-Nov-1999 1621Z
-Press Enter to continue, A to abort (16 lines) >
+$in = [
+  [ 0, 4, 'a', '^(K|N|A|W|VE|VA|J)'],  # 0 = drop, 'a' = alphanumeric
+  [ 1, 0, 'd', 0, 1 ],                 # 1 = want, 'd' = everything else
+                     ];
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>You can now read any file in this directory using the type command, like this ....
+<P>
+<P>So the filter is wrapped in between a pair of square brackets.  This tells 
+Spider to look in between these limits.  Then each line is contained within 
+its own square brackets and ends with a comma. Lets look carefully at the first 
+line.  The first element is 0 (drop).  Therefore anything we put on this line 
+will not be accepted.  The next element is 4.  This means we are filtering by 
+the spotter.  The third element is the letter "a" which tells the program to 
+expect an alphanumeric expression in the fourth element.  The fourth element 
+is a list of letters separated by the pipe symbol.
+<P>
+<P>What this line does is tell the program to drop any spots posted by anyone in 
+the USA, Canada or Japan.
+<P>
+<P>The second line is the default rule for anything else.  The "d" tells us this 
+and the line simply reads... accept anything else.
+<P>
+<P>You can add as many lines as you need to complete the filter but if there are 
+several lines of the same type it is neater to enclose them all as one line.  
+An example of this is where specific bands are set.  We could write this like 
+this ....
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-type bulletins/opdx391
-Ohio/Penn DX Bulletin No. 391
-The Ohio/Penn Dx PacketCluster
-DX Bulletin No. 391
-BID: $OPDX.391
-January 11, 1999
-Editor Tedd Mirgliotta, KB8NW
-Provided by BARF-80 BBS Cleveland, Ohio
-Online at 440-237-8208 28.8k-1200 Baud 8/N/1 (New Area Code!)
-Thanks to the Northern Ohio Amateur Radio Society, Northern Ohio DX
-Association, Ohio/Penn PacketCluster Network, K1XN &amp; Golist, WB2RAJ/WB2YQH
-&amp; The 59(9) DXReport, W3UR &amp; The Daily DX, K3TEJ, KN4UG, W4DC, NC6J, N6HR,
-Press Enter to continue, A to abort (508 lines) >
+[ 0,0,'r',[1800.0, 2000.0], 1],
+[ 0,0,'r',[10100.0, 10150.0], 1],
+[ 0,0,'r',[14000.0, 14350.0], 1],
+[ 0,0,'r',[18000.0, 18200.0], 1],
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>The page length will of course depend on what you have it set to!
 <P>
-<H2><A NAME="ss6.4">6.4 The Aliases file</A>
-</H2>
-
-<P>You will find a file in /spider/cmd/ called Aliases.  First, copy this file to /spider/local_cmd/Aliases and edit this file.  You will see something like this ...
+<P>But the line below achieves the same thing and is more efficient ....
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-
-#!/usr/bin/perl
-
-# provide some standard aliases for commands for terminally
-# helpless ak1a user (helpless in the sense that they never
-# read nor understand help files)
-
-# This file is automagically reloaded if its modification time is 
-# later than the one stored in CmdAlias.pm
-
-# PLEASE make this file consistant with reality! (the patterns MUST
-# match the filenames!)
-
-# Don't alter this file, copy it into the local_cmd tree and modify it.
-# This file will be replaced everytime I issue a new release.
-
-# You only need to put aliases in here for commands that don't work as
-# you desire naturally, e.g sh/dx on its own just works as you expect
-# so you need not add it as an alias.
-
-
-
-package CmdAlias;
-
-%alias = (
-    '?' => [
-          '^\?', 'apropos', 'apropos',
-        ],
-    'a' => [
-          '^ann.*/full', 'announce full', 'announce', 
-          '^ann.*/sysop', 'announce sysop', 'announce',
-          '^ann.*/(.*)$', 'announce $1', 'announce',
-        ],
-        'b' => [
-        ],
-        'c' => [
-        ],
-        'd' => [
-          '^del', 'kill', 'kill',
-          '^del\w*/fu', 'kill full', 'kill',
-          '^di\w*/a\w*', 'directory all', 'directory',
-          '^di\w*/b\w*', 'directory bulletins', 'directory',
-          '^di\w*/n\w*', 'directory new', 'directory',
-          '^di\w*/o\w*', 'directory own', 'directory',
-          '^di\w*/s\w*', 'directory subject', 'directory',
-          '^di\w*/t\w*', 'directory to', 'directory',
-          '^di\w*/f\w*', 'directory from', 'directory',
-          '^di\w*/(\d+)', 'directory $1', 'directory',
-        ],
-        'e' => [
-        ],
-        'f' => [
-        ],
-        'g' => [
-        ],
-        'h' => [
-        ],
-        'i' => [
-        ],
-        'j' => [
-        ],
-        'k' => [
-        ],
-        'l' => [
-          '^l$', 'directory', 'directory',
-          '^ll$', 'directory', 'directory',
-          '^ll/(\d+)', 'directory $1', 'directory',
-        ],
-        'm' => [
-        ],
-        'n' => [
-          '^news', 'type news', 'type',
-        ],
-        'o' => [
-        ],
-        'p' => [
-        ],
-        'q' => [
-          '^q', 'bye', 'bye',
-        ],
-        'r' => [        
-          '^r$', 'read', 'read',
-          '^rcmd/(\S+)', 'rcmd $1', 'rcmd',
-        ],
-        's' => [
-          '^s/p$', 'send', 'send',
-          '^sb$', 'send noprivate', 'send',
-          '^set/home$', 'set/homenode', 'set/homenode',
-          '^set/nobe', 'unset/beep', 'unset/beep',
-          '^set/nohe', 'unset/here', 'unset/here',
-          '^set/noan', 'unset/announce', 'unset/announce',
-          '^set/nodx', 'unset/dx', 'unset/dx',
-          '^set/nota', 'unset/talk', 'unset/talk',
-          '^set/noww', 'unset/wwv', 'unset/wwv',
-          '^set/nowx', 'unset/wx', 'unset/wx',
-          '^sh$', 'show', 'show',
-          '^sh\w*/buck', 'dbshow buck', 'dbshow',
-          '^sh\w*/bu', 'show/files bulletins', 'show/files',
-          '^sh\w*/c/n', 'show/configuration nodes', 'show/configuration',
-          '^sh\w*/c$', 'show/configuration', 'show/configuration',
-          '^sh\w*/com', 'dbavail', 'dbavail',
-          '^sh\w*/dx/(\d+)-(\d+)', 'show/dx $1-$2', 'show/dx',
-          '^sh\w*/dx/(\d+)', 'show/dx $1', 'show/dx',
-          '^sh\w*/dx/d(\d+)', 'show/dx from $1', 'show/dx',
-          '^sh\w*/email', 'dbshow email', 'dbshow',
-          '^sh\w*/hftest', 'dbshow hftest', 'dbshow',
-          '^sh\w*/vhftest', 'dbshow vhftest', 'dbshow',
-          '^sh\w*/qsl', 'dbshow qsl', 'dbshow',
-          '^sh\w*/tnc', 'who', 'who',
-      '^sh\w*/up', 'show/cluster', 'show/cluster',
-          '^sh\w*/w\w*/(\d+)-(\d+)', 'show/wwv $1-$2', 'show/wwv',
-          '^sh\w*/w\w*/(\d+)', 'show/wwv $1', 'show/wwv',
-          '^sp$', 'send', 'send',
-        
-    ],
-        't' => [
-          '^ta$', 'talk', 'talk',
-          '^t$', 'talk', 'talk',
-        ],
-        'u' => [
-        ],
-        'v' => [
-        ],
-        'w' => [
-          '^wx/full', 'wx full', 'wx',
-          '^wx/sysop', 'wx sysop', 'wx',
-        ],
-        'x' => [
-        ],
-        'y' => [
-        ],
-        'z' => [
-        ],
-)
+  [ 0, 0, 'r',
+    [  
+      1800.0, 2000.0,         # top band 
+      10100.0, 10150.0,       # WARC  
+      14000.0, 14350.0,       # 20m
+      18000.0, 18200.0,       # WARC
+    [ ,1 ],
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>You can create aliases for commands at will.  Beware though, these may not always turn out as you think.  Care is needed and you need to test the results once you have set an alias.
 <P>
-<H2><A NAME="ss6.5">6.5 Forward.pl</A>
+<P>
+<H2><A NAME="ss6.2">6.2 Announcements</A>
 </H2>
 
-<P>DXSpider receives all and any mail sent to it without any alterations needed
-in files.  Because personal and bulletin mail are treated differently, there
-is no need for a list of accepted bulletin addresses.  It is necessary, however,
-to tell the program which links accept which bulletins.  For example, it is
-pointless sending bulletins addresses to "UK" to any links other than UK
-ones.  The file that does this is called forward.pl and lives in /spider/msg.
-At default, like other spider files it is named forward.pl.issue.  Rename it
-to forward.pl and edit the file to match your requirements.
-The format is below ...
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-#
-# this is an example message forwarding file for the system
-#
-# The format of each line is as follows
-#
-#     type    to/from/at pattern action  destinations
-#     P/B/F     T/F/A     regex   I/F    [ call [, call ...] ]
-#
-# type: P - private, B - bulletin (msg), F - file (ak1a bull)
-# to/from/at: T - to field, F - from field, A - home bbs, O - origin 
-# pattern: a perl regex on the field requested
-# action: I - ignore, F - forward
-# destinations: a reference to an array containing node callsigns
-#
-# if it is non-private and isn't in here then it won't get forwarded 
-#
-# Currently only type B msgs are affected by this code.
-# 
-# The list is read from the top down, the first pattern that matches
-# causes the action to be taken.
-#
-# The pattern can be undef or 0 in which case it will always be selected
-# for the action specified
-#
-# If the BBS list is undef or 0 and the action is 'F' (and it matches the
-# pattern) then it will always be forwarded to every node that doesn't have 
-# it (I strongly recommend you don't use this unless you REALLY mean it, if
-# you allow a new link with this on EVERY bull will be forwarded immediately
-# on first connection)
-#
 
-package DXMsg;
-
-@forward = (
-'B',    'T',    'LOCAL',        'F',    [ qw(GB7MBC) ],
-'B',    'T',    'ALL',          'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
-'B',    'T',    'UK',           'F',    [ qw(GB7BAA GB7ADX) ],
-'B',    'T',    'QSL',          'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
-'B',    'T',    'QSLINF',       'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
-'B',    'T',    'DX',           'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
-'B',    'T',    'DXINFO',       'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
-'B',    'T',    'DXNEWS',       'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
-'B',    'T',    'DXQSL',        'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
-'B',    'T',    'SYSOP',        'F',    [ qw(GB7BAA GB7ADX) ],
-'B',    'T',    '50MHZ',        'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
-);
+# This is an example announce or filter allowing only West EU announces
+# 
+# The element list is:-
+# 0 - callsign of announcer
+# 1 - destination * = all, &lt;callsign> = routed to the node
+# 2 - text
+# 3 - * - sysop, &lt;some text> - special list eg 6MUK, ' ', normal announce
+# 4 - origin
+# 5 - 0 - announce, 1 - wx
+# 6 - channel callsign (the interface from which this spot came)
+
+$in = [
+        [ 1, 0, 'a', '^(P[ABCDE]|DK0WCY|G|M|2|EI|F|ON)' ],
+        [ 0, 0, 'd', 0 ]
+];
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>Simply insert a bulletin address and state in the brackets where you wish
-that mail to go.  For example, you can see here that mail sent to "UK" will
-only be sent to the UK links and not to PA4AB-14.
-<P>
-<P>At the moment, once the file is edited, the program will need to be restarted
-for the changes to take effect.
+<P>In this example, only the prefixes listed will be allowed.  It is possible to 
+be quite specific.  The Dutch prefix "P" is followed by several secondary 
+identifiers which are allowed.  So, in the example, "PA" or "PE" would be ok 
+but not "PG".  It is even possible to allow information from a single callsign.  
+In the example this is DK0WCY, to allow the posting of his Aurora Beacon.
 <P>
-<H2><A NAME="ss6.6">6.6 Distribution lists</A>
+<H2><A NAME="ss6.3">6.3 WWV</A>
 </H2>
 
-<P>Distribution lists are simply a list of users to send certain types of
-mail to.  An example of this is mail you only wish to send to other
-sysops.  In /spider/msg there is a directory called <EM>distro</EM>.  You
-put any distibution lists in here.  For example, here is a file called
-SYSOP.pl that caters for the UK sysops.
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-qw(GB7TLH GB7DJK GB7DXM GB7CDX GB7BPQ GB7DXN GB7MBC GB7MBC-6 GB7MDX
-   GB7NDX GB7SDX GB7TDX GB7UDX GB7YDX GB7ADX GB7BAA GB7DXA GB7DXH 
-   GB7DXK GB7DXI GB7DXS)
+
+# This is an example WWV filter
+# 
+# The element list is:-
+# 0 - nominal unix date of spot (ie the day + hour:13)
+# 1 - the hour
+# 2 - SFI
+# 3 - K
+# 4 - I
+# 5 - text
+# 6 - spotter
+# 7 - origin
+# 8 - incoming interface callsign
+
+# this one doesn't filter, it just sets the hop count to 6 and is
+# used mainly just to override any isolation from WWV coming from
+# the internet.
+
+$in = [
+        [ 1, 0, 'd', 0, 6 ]
+];
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>Any mail sent to "sysop" would only be sent to the callsigns in this list.
-<P>
-<H2><A NAME="ss6.7">6.7 Console.pl</A>
-</H2>
-
-<P>In later versions of Spider a simple console program is provided for the sysop.  This has a type ahead buffer with line editing facilities and colour for spots, announces etc.
-To use this program, simply use console.pl instead of client.pl.
 <P>
-<P>To edit the colours, copy /spider/perl/Console.pl to /spider/local and edit the file with your favourite editor.
+<P>It should be noted that the filter will start to be used only once a user/node 
+has logged out and back in again.
+<P>I am not going to spend any more time on these filters now as they will become 
+more "comprehensive" in the near future.
 <P>
 <HR>
 <A HREF="adminmanual-7.html">Next</A>