Die Dateien die beim Admin-User im Verzeichniss liegen sind groessten Teils nur Vereinfachungen.
Also ich habe folgende Dateien ins Verzeichniss gelinkt.
ln -s /etc/fidogate/areas.bbs ln -s /etc/fidogate/fareas.bbs ln -s /etc/fidogate/packing ln -s /etc/fidogate/passwd ln -s /etc/fidogate/routing ln -s /usr/local/bin/fidogate/ftn2rfc ln -s /usr/local/bin/fidogate/ftnaf ln -s /usr/local/bin/fidogate/ftnfattach ln -s /usr/local/bin/fidogate/ftnhatch ln -s /usr/local/bin/fidogate/ftntick ln -s /usr/local/bin/fidogate/rfc2ftn ln -s /usr/local/bin/fidogate/runin ln -s /etc/ifcico/config ln -s /etc/ifcico/passworts ln -s /usr/local/bin/ifcico/ifcico ln -s /usr/local/bin/ifcico/ifindex ln -s /usr/local/bin/ifcico/ifstat
Um bei meinem Hub meine Mails zu holen verwende ich das Skript
ifmail/misc/contrib/ifpoll in STARK gekuerzter Fassung.
Es liegt in beim admin-user im Verzeichniss und wird per CRON um 04:50
ausgefuehrt. (Gekuerzt habe ich es deshalb weil die Ausgaben in
/fido/log/ifdebug bzw auf tty7 voellig ausreichend sind.)
#!/bin/sh
#
# /home/fido/ifpollhub
#
# gekuerzte Fassung von Matthias Schniedermeyer
#
# fuer Cry in the Darkness
#
# how often should i try to call NODE?
MaxTry=20
Node="f602.n2432.z2"
# delay between outgoing calls in seconds
DELAY=60
# loop until ifcico could connect the node or MaxTry is encountered
#
i=1; errlv=1
while let 'i <= MaxTry' && let 'errlv != 0'
do
#
# start ifcico in master mode ..
#
~/ifcico -r 1 $Node
errlv=$?
if [ $errlv != "0" ]; then
if [ $i != $MaxTry ]; then
sleep $DELAY
fi
let i=i+1
fi
done
Von diesem Script habe ich noch eine 2 Fassung.
#!/bin/sh
#
# /home/fido/ifpollhub2
#
# gekuerzte Fassung von Matthias Schniedermeyer
#
# fuer Cry in the Darkness
#
if [ -f /var/spool/fnet/outbound/00000005.* ]; then
# how often should i try to call NODE?
MaxTry=20
Node="f602.n2432.z2"
# delay between outgoing calls in seconds
DELAY=60
# loop until ifcico could connect the node or MaxTry is encountered
#
i=1; errlv=1
while let 'i <= MaxTry' && let 'errlv != 0'
do
#
# start ifcico in master mode ..
#
~/ifcico -r 1 $NODE
errlv=$?
if [ $errlv != "0" ]; then
if [ $i != $MaxTry ]; then
sleep $DELAY
fi
let i=i+1
fi
done
fi
Jetzt muessen aber auch Packete die von Points hochgeladen wurden eingetosst werden. Dafuer habe ich folgendes Script geschrieben das auch beim admin-user im Verzeichniss liegt und per CRON alle 5 Minuten aufgerufen wird.
#!/bin/sh
#--------------------------------------------
ls /var/spool/fnet/in/*.mo* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.tu* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.we* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.th* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.fr* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.sa* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.su* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.pkt &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.MO* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.TU* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.WE* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.TH* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.FR* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.SA* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.SU* &>/dev/null && ~/runin
ls /var/spool/fnet/in/*.PKT &>/dev/null && ~/runin
#-------------------------------------------------
# Ticker -------------------------------------------
ls /var/spool/fnet/in/*.tic &>/dev/null && ~/ftntick
#---------------------------------------------------
#E-Mail -----------------------------------------------------
if [ -f /fido/fnet/outbound/0980025d.pnt/00000063.hut ]; then
~/ftnin
~/ftninpost
fi
#------------------------------------------------------------
#-----------------------------------------------------------------
if [ -f /var/spool/fnet/outbound/0980025d.pnt/00000062.hut ]; then
~/ftn2rfc -i /var/spool/fnet/outbound/0980025d.pnt/00000062.hut
for pack in /var/spool/fnet/in/mail/*.msg
do
~/ftnaf -m -r < $pack > message.body
username=`grep "From " $pack | cut -d ' ' -f 2`
cat message.header message.body > message
~/rfc2ftn -O /var/spool/fnet/in $username < message
rm message message.body $pack
~/runin
done
fi
#-----------------------------------------------------------------
Dies Script ist jetzt aber starker Tobac als werde ich versuche es zu erklaeren.
Im ersten Abschnitt wird geprueft ob ein Packet im inbound liegt
und wenn ja dann wird runin gestarted. (runin entpackt die Packete
und started dann den tosser.)
Der zweite Abschnitt prueft ob Tic-Files vorhanden sind und started gegebenfalls den File-ticker.
Der dritte Abschnitt sorgt dafuer das die E-Mails, die an den Gate-Point geschrieben wurden, ins I-Net verschickt werden.
Der vierte Abschnitt ist mein "Ersatz" fuer Sendmail. Es verarbeitet Mails an den Areafix und schickt die Repleys zurueck.
(Die "fehlende Datei" message.header sieht so aus.
Subject: Areafix From: Areafix@p0.f605.n2432.z2.fidonet.org Deine Mail an Areafix ergab:
Ein Sonderfall bei mir ist ja, das ich nur die Areas beim Hub bestellt habe die auch wirklich von den Points gelesen werden. (Spart bares Geld!) Dafuer musste ich mir aber ein paar Gedanken machen und bis Fidogate das kann (Wurde von Martin in die TODO-Liste aufgenommen) behelfe ich mir mit folgendem Script + C Programm.
/* Check if an area in areas.bbs is subscribed or not */
#include <stdio.h>
#include <string.h>
FILE *areas, *new, *sub;
int main (void)
{
char zeile[200];
int test;
int count;
char node[]="605";
areas = fopen ("areas.bbs", "r");
new = fopen ("areas.new", "w");
sub = fopen ("sub", "w");
fgets (zeile, 199, areas);
fputs (zeile, new);
fgets (zeile, 199, areas);
while (!feof (areas))
{
if (zeile[1] == 45)
{
test = (int) strstr (zeile, node);
if (test)
{
zeile[1] = 43;
count = 3;
while (!(zeile[count] == 32))
{
fputc (zeile[count], sub);
count += 1;
}
fputc (10, sub);
}
}
else
{
test = (int) strstr (zeile, node);
if (!(test))
{
zeile[1] = 45;
count = 3;
fputc (45, sub);
while (!(zeile[count] == 32))
{
fputc (zeile[count], sub);
count += 1;
}
fputc (10, sub);
}
}
fputs (zeile, new);
fgets (zeile, 199, areas);
}
fclose (areas);
fclose (new);
fclose (sub);
return 0;
}
if [ ! -s sub ]; then
~/check
fi
if [ -s sub ]; then
mv areas.new /etc/fidogate/areas.bbs
cat Areafix sub | ~/rfc2ftn -t
cd /var/spool/fnet/outbound
a=`ls *.pkt`
mv $a 0980025a.cut
cd /fido/fido
fi
if [ -f areas.new ]; then
rm areas.new
fi
rm sub
Areafix
Subject: <Hier das Passwort hinschreiben!!> To: Areafix@p0.f600.n2432.z2.fidonet.org From: Cry in the darkness@p0.f605.n2432.z2.fidonet.org
Ich weiss das das alles ein BISSCHEN unuebersichtlich und ohne Kommentare ist. Wie gesagt das ist die Uebergangsloesung bis Fidogate das "von selbst" regelt.
So das wars was bei meinem Admin-User im Verzeichniss liegt.