Externe Programme fuer (X)NET auf TNC3/TNC31/TNC4 und Atari ST
==============================================================

Hier eine kleine Sammlung von externen Programmen fuer
den (X)Net auf TNC3 und Atari ST. Die meisten externen
Programme sind auf beiden Plattformen unter (X)NET ablauf-
faehig.


Inhaltsverzeichnis
==================

Programm Kurzbeschreibung                         TNC3 Atari

beacond  Baken-Hintergundprozess....................x.....x
blinkd   Laesst die LEDs des TNC3 blinken...........x......
callchkd Callcheck-Hintergundprozess................x.....x    
cat      Anzeige von Textdateien....................x.....x
conversd Ping-Pong-Convers-Hintergundprozess........x.....x    
cp       COPY-Befehl................................x.....x
crond    Zeitgesteuerte Aktionen ausfuehren.........x.....x
ether    Ethernet-Treiber fuer den TNC4e...................
del      DEL-Befehl, erlaubt Wildcards..............x.....x
dump     Erstellt einen Speicherabzug...............x.....x
ep_crc   Errechnet EPROM-Checksumme.................x......
fbeacon  Senden einer Bake aus einer Datei..........x.....x
flashcpy Downloadprogramm der EPROM-Inhalte.........x......
ftpd     FTP-Server.................................x.....x
httpd    Web-Server.................................x.....x
ls       Anzeige der Dateien in Kurzform............x.....x
ledd     Ansteuern der CON und STA LEDs.............x.....x
monitor  Monitoring von Ports.......................x.....x
out      Fernsteuerung fuer den Port A des MC68302..x......
pftp     Packet Filetransfer Programm...............x.....x
poke     Aenderung der Speicherinhalte..............x.....x
pop3d    Post Office Protocol Version 3.............x.....x
postatd  Port Statistik mit direkter Abfrage........x.....x
ren      Umbenennen von Dateien.....................x.....x
routed   IP-Router-Hintergundprozess................x.....x
statd    Statistik-Sammler Hintergrundprozess.......x.....x
smtpd    Simple Mail Transfer Protocol..............x.....x
tcpd     TCP Protocol Stack.........................x.....x
telnet   Telnet Client..............................x.....x
telnetd  Telnet-Server..............................x.....x
update   Vereinfachtes FLASH-Updateprogramm.........x......
xgate    Packet-Radio Gateway-Programm..............x.....x

BLINKD
======
Hintergrundprozess der die LEDs des 3Net-Master TNCs blinken laesst.
Fuer Digis ohne angeschlossenes Terminal kann damit die Betriebs-
bereitschaft des Digis angezeigt werden. Verwendung: Im AUTOEXEC.NET
als Hintergrundprozess:

start blinkd [Millisekunden]

Optional kann die Frequenz in Millisekunden angegeben werden.
Standardwert ist 50 ms.
Da einige Digibetreiber die LED-Ausgnge der SCC3 fr Steuerungszwecke
verwenden, knnen sie mit diesem Parameter das Blinken auf die
LEDs 0 bis 3 (SCC1 und SCC2) beschrnken. Beispiel:

start blinkd 50 4

Blinkt nur auf SCC1 und SCC2.

CALLCHKD
========
Callchkd ist ein Hintergrundprozess der Rufzeichen beim Connect auf
Gueltigkeit ueberprueft. Callchkd wird mit der Befehlsfolge:

start callchkd

gestartet.
Die Gueltigkeitspruefung findet nach folgenden Regeln statt:

- das Call muss alphanumerisch sein
- darf keine Kleinbuchstaben enthalten
- mehr als zweistellig sein ( >= 3)
- mindestens eine Zahl enthalten
- mindestens einen Buchstaben enthalten

Wem diese Regeln nicht genuegen, der kann in der Datei "callchk.net"
weitere Zeilen mit abzulehnenden Calls hinterlegen. Die "Wildcards"
'*' und '?' koennen dabei verwendet werden. Beispiel fuer eine
callchk.net - Datei:
===================================
dn*
a*
xx0xx
dl?xyz

Sofern das Rufzeichen als gesperrt erkannt wurde, wird dem Benutzer
die Datei "suspend.txt" zugeschickt und er wird disconnected.
Der Vorfall wird mit Datum und Uhrzeit in der Datei "netrom.log"
festgehalten. Beispiel fuer eine
suspend.txt - Datei:
===================================
Das Rufzeichen %C wurde auf %Y gesperrt - bitte setzen Sie sich
mit dem Sysop in Verbindung.

LEDD
====
Steuert die LEDs von angeschlossenen Geraeten (TNCs/RMNC).
Die CON-LED zeigt an ob Connects auf dem Port sind. Die STA-LED leuchtet
bei Uebertragungsfehlern (in Senderichtung) auf. Die CON-LED flackert
kurz bei Empfangsfehlern. LEDD funktioniert zusammen mit SRPM,
HSKISS, TRKISS, IPKISS und RMNC.
Gestart wird der LEDD Hintergrundprozess mit:

start ledd

PFTP
====
PFTP baut eine "Filetransfer-Session" zu einer Gegenstation auf.
Innerhalb dieser Session koennen Dateien vom aktuellen Knoten
auf den Zielknoten uebertragen werden. Dabei wird das uebliche
BIN-Format verwendet.
Zusammen mit dem (X)NET-Befehl "null" ist pftp ein ideales Werkzeug
um den Nutzdatendurchsatz von Linkstecken zu testen.

Innerhalb einer PFTP-Session sind folgende Befehle verfgbar:

B(ye)              Session beenden
L(ength) <n>       Paclen auf den Wert <n> setzen
P(ut)    <file>    <file> im BIN-Format an die Gegenstation
                   schicken
Q(uote)  <text>    <text> an die Gegenstation senden
T(test)  <n>       Testdatenstrom mit <n> Byte an die Gegenstation
                   senden

PFTP muss mit der Angabe des Zielknotens gestartet werden. Mit der
Angabe einer Portnummer kann ein expliziter Layer 2 - Connect
erzwungen werden.

Der Aufruf

=>pftp db0xyz

erzeugt einen Connect zu db0xyz ueber einen optimalen Weg (FlexNet
oder Net/ROM).

=>pftp 1:db0xyz

connectet immer ueber Layer 2 und fest ueber den Port 1. Via-Rufzeichen
koenen angegeben werden.

CROND
=====
Crond wird mit der Befehlsfolge "start crond" am besten in der AUTOEXEC.NET
gestartet. Gestoppt wird der Hintergrundprozess mit Hilfe des Kommandos
stop.
Crond liest jede Minute in der Datei "crontab" nach ob Befehle auszufuehren
sind. Die CROND Implementierung orientiert sich an der gleichnamigen
Implementierung unter UNIX.
Die (Text-) Datei "crontab" besteht aus Anweisungen fuer den CROND-Prozess,
die mehr oder weniger lauten: "fuehre dieses Kommando um die Uhrzeit an
diesen Tagen aus". Damit ist der Aufbau der Datei  klar:
Sie besteht pro Zeile aus einer Zeitangabe und einem Befehl.

Grundsaetzlich gilt:
Leerzeilen und fuehrende Leerzeichen werden ignoriert. Zeilen die mit
einem '#' beginnen werden als Kommentare ueberlesen. Ein '#'-Zeichen
innerhalb der Zeile wird als Befehl interpretiert.

Eine Zeile in der "crontab"-Datei besteht aus fuenf- Zeit und Datums-
feldern gefolgt von dem auszufuehrenden Kommando.
Dieses Kommando wird ausgefuehrt, wenn die Minute, Stunde, und der Monat
mit dem aktuellen Zeitpunkt uebereinstimmen UND wenn wenigstens eines
der Felder Tag (im Monat) oder Wochentag mit dem aktuellen Datum ueber-
einstimmen. Die fuenf Felder fuer den Zeitpunkt sind:

     Feld            Wertebereich
     ------          ------------
     Minute          0-59
     Stunde          0-23
     Tag (im Monat)  1-31
     Monat           1-12
     Wochentag       0-6  (Sonntag = 0, Montag = 1, etc...)

Ein Stern ('*') steht fuer: immer oder beliebig. Die Angabe von Listen
ist moeglich, die Angabe von 0,15,30,45 im Feld Minute steht beispiels-
weise fuer jede Viertelstunde. Achtung: in der Liste duerfen keine Leer-
zeichen vorkommen.

Das sechste Feld in der Zeile ist das auszufuehrende Kommando. Das
Kommando wird mit den Sysop-Berechtigungen ausgefuehrt. Es gibt dabei 
keine Einschraenkungen.

Hinweis: Der Tag an dem ein Kommando ausgefuehrt wird, kann in zwei
Feldern angegeben werden Tag (im Monat) oder Wochentag. Wenn beide
Angaben gemacht werden, wird das Kommando sowohl am angegebenen Wochen-
tag als auch am angegebenen Monatstag ausgefuehrt. Die Zeile

30 4 1,15 * 5 msg all Tach allerseits

wuerde um 4.30 Uhr am ersten und am 15ten des Monats ausgefuehrt und
zusaetzlich jeden Freitag um 4.30 Uhr.

Einige (nuetzliche?) Beispiele fuer crontab-Eintraege:

# Am 1.1. um 0.00 Uhr ausfuehren, Wochentag egal:
 0  0  1  1  * msg all Prosit Neujahr!

# Immer nachts um 0.30 Uhr
30  0  *  *  * msg all Jetzt wird's aber Zeit ins Bett!

# Werktags ab 16.30 Uhr DAMA - Connectslot aktivieren (3 Sekunden)
30 16  *  *  1,2,3,4,5 dama dslot 3000

# Ab 22.00 Uhr DAMA - Connectslot abschalten
 0 22  *  *  * dama dslot 0

# jeden Sonntag, 10.59 Uhr Einstieg abschalten und Rundspruch zuschalten
# die out-Befehle dazu stehen in der Datei phonie.net
59 10  *  *  0 exec phonie.net

# jeden Sonntag, 11.31 Rundspruch abschalten, Digi einschalten
# die out-Befehle dazu stehen in der Datei digi.net
31 11  *  *  0 exec digi.net

# Die Digi-Benutzer an die sonntaegliche OV-Runde erinnern
25 11  *  *  0 msg all Die OV-Runde beginnt in fuenf Minuten auf 144.575 MHz

# Abschaltung wg. Wartungsarbeiten am 1.4. 13.00
# Benutzer ab 12.30 Uhr benachrichtigen und um 13.00 Uhr Software
# herunterfahren.
30,45,50,55,56,57,58,59 12 1 4 * msg all Achtung! Abschaltung um 13.00 Uhr.
 0 13  1  4  * prgexit
 
# Monatsstatistik von statd wegspeichern
 0  0  1  *  * ren port.sta vormon.sta

OUT
===

Mit Hilfe des OUT-Befehls koennen einzelne Portbits des TNC3
zu Fernsteuerzwecken ein- und ausgeschaltet werden.

Syntax:

OUT [<port>] <PortBit> [<Value>]

<Port> = a | b
<PortBit> = 0..15
<Value> = 0..1

Die Angabe des Prozessorports (a oder b) ist optional. Sofern
kein Port angegeben wird, wird Port a verwendet.

Beispiel:
   =>OUT a 15 0
   schaltet die CON-LED des TNC3 ein.

Beispiel:   
   =>OUT a 15
   PA15 = 0

gibt den momentanen Zustand (0 oder 1) des Ausgabeports an.

Folgende I/O-Leitungen koennen ueber den OUT-Befehl ferngesteuert
werden:

PortBit	SCC	Modem	Pin Modemstecker
 0	2	RXD	15	J13
 1	2	TXD	13	J13
 2	2	RCLK	19	J13
 3	2	TCLK	17	J13
 4	2	CTS	 9	J13
 5	2	RTS	11	J13
 6	2	CD	 7	J13
 7	2	BEEPER

 8	3	RXD	15	J10
 9	3	TXD	13	J10
10	3	RCLK	19	J10
11	3	TCLK	17	J10
12	3	BEEPER

13		CON LED 3	(Layout CON 0 LED)
14		STA LED 3	(Layout STA 0 LED)
15		CON LED 1


UPDATE
======
Update vereinfacht das 3NET FLASH-Update des Digis ganz wesentlich. Nach
der Eingabe des update Befehls (ohne Parameter) kann direkt die neue Flash-
Version zum Digi geschickt werden (Datei EPFLASH.ABS). Nach dem Empfang
werden die Flash-EPROMs programmiert und der Digi mit der neuen Software
gestartet.
Selbstverstaendlich wird vor dem Programmieren die Korrektheit der Daten
geprueft (CRC). Tritt beim CRC oder waehrend der Uebertragung des Updates
ein Fehler auf, so wird der Vorgang abgebrochen und der Digi laeuft mit 
der alten Software normal weiter.

POSTATD
=======
Statistikprogramm mit direkter Abfragemoeglichkeit. Der Hintergrundprozess
wird mit:

start postatd

gestartet und mit Hilfe des STOP-Befehls wieder gestoppt. Danach ist fuer
jeden Benutzer der Befehl POStat vorhanden, welcher eine Portstatistik aus-
gibt. Das Messintervall ist fest auf 10 Minuten festgelegt. Die Messwerte
koennen erst 10 Minuten nach dem Start von "postatd" abgefragt werden.

Syntax:

pos [<portnr> | '*']

Ohne Parameter gibt pos die Statistik aller aktiven Ports aus. Mit dem
Parameter <portnr> erhaelt man eine Uebersicht der Messwerte der letzten
Stunde. Mit '*' erfolgt diese Ausgabe fuer alle aktiven Ports.

FBEACON
=======
FBEACON sendet eine Datei (max 256 Zeichen) als Bake aus. Der Aufruf ist sehr
einfach:

FBEACON <File> <PortNr> <Call> [<via>]

Nach der Aussendung beendet sich das Programm wieder. Um periodisch Baken
auszusenden kann FBACON zusammen mit ->CROND verwendet werden.

Beispiel:

=> fbeacon autoexec.net 1 BEACON
