Zurück Weiter Inhaltsverzeichnis

9. Datein im Verzeichniss vom Admin-user

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

Dies Script liegt auch beim admin-user im Verzeichniss und wird per CRON um 00:00 aufgerufen und pollt nur dann beim Hub wenn auch wirklich ein Packet fuer ihn vorhanden ist. (Um den richtigen Dateinamen herrauszubekommen muss man aber warten bis ein Packet fuer den "Chef" im outbound liegt und sich den Dateinamen merken. Es ist naemlich IMMER der gleiche. (Mit Aussnahme der Extension, die ist Wochentags abhaengig))

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;
}

Und das passende Script dazu.
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

Und die 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.


Zurück Weiter Inhaltsverzeichnis