home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / com / bbs / server / connserv / connect / scripts / server.scr
Encoding:
Text File  |  1994-07-21  |  15.5 KB  |  722 lines

  1. echo "ConNect ftp-Server Script"
  2. echo "Version 1.4 vom 21/07/94, 13:58:46 Uhr"
  3. echo "von Andreas Schrell @ RS (MausNet)"
  4. echo "mit Tips von Wolfgang Wander @ HH2 (MausNet)"
  5. echo "Benutzung in Firmen nur nach Zahlung von 30DM"
  6. echo "siehe dazu README der Verteilung!"
  7.  
  8. # Changes:
  9. # V 1.4 automatisches Abschalten zwischen 7:00 und 7:10
  10. #       Zeitlog bei FAX
  11. #       start3.txt -> start.txt umbenannt
  12. # V 1.3 CARRIER-TEST
  13. # V 1.2 FAX-CONNECT testweise aufgenommen
  14. # V 1.2 Warteschleife etwas schneller
  15.  
  16. # !!!!!!! WICHTIG: Hier ggf. das Laufwerk/Pfad „ndern !!!!!!!!
  17. ServerPfad="j:\\server"
  18. MYFAXID=49202666889;
  19.  
  20. echo "Starte den Server..."
  21.                                                                   
  22. echo "Konstanten"
  23.  
  24. # Abh„ngig von der Verfgbarkeit eines Modems soll etwas unterschiedlich 
  25. # gearbeitet werden:
  26. send "+++ATH"
  27. if waitfor -t 1s "OK"; then
  28.     Modem=1
  29.     Extern=1
  30.     echo "" 
  31.     echo "Modem erkannt -> Modem=1"
  32. else
  33.     Modem=0
  34.     Extern=0
  35.     echo "Modem nicht gefunden -> Modem=0"
  36. fi
  37.  
  38. PublicPfad=$ServerPfad\\"pub"
  39. MailPfad=$ServerPfad\\mail
  40. if [ $Modem -eq 1 ]; then
  41.     LogDatei=$ServerPfad\\log\\extern.log
  42.     NummerFile=$ServerPfad\\log\\extern.num
  43.     SuperName=$ServerPfad\\log\\extern.sup
  44. else
  45.     LogDatei=$ServerPfad\\log\\local.log
  46.     NummerFile=$ServerPfad\\log\\local.num
  47.     SuperName=$ServerPfad\\log\\local.sup
  48. fi
  49. UserPfad=$ServerPfad\\passwd
  50. UserDatei=$UserPfad\\user.dat
  51. TempPfad=$ServerPfad\\temp
  52. Schrott=$TempPfad\\schrott
  53. HOME=$PublicPfad
  54. TIMEOUT="120s"
  55.  
  56. echo "Variablen"
  57.  
  58. BenutzerName="? ?"
  59. AktuellerPfad=$PublicPfad
  60.  
  61. echo "Kleinkram definieren"
  62.  
  63. # Send-Funktion wegen Line-Feeds etc.
  64. function Send {
  65.     echo $1 >AUX:
  66. }
  67.  
  68. # Log:
  69. # Schreibt in Log-Datei und aufs Terminal
  70. # Parameter: wie echo, aber in ""
  71.  
  72. function Log {
  73.     echo $1 >> $LogDatei
  74.     echo $1
  75. }
  76.  
  77. # BefehlsLog:
  78. # Tr„gt einen abgesetzten Befehl ins Logbuch ein
  79. # Parameter:
  80. #    $1: Befehl
  81. #    $2: Commandline
  82.  
  83. function BefehlsLog {
  84.     Log "-n [`datum`][$BenutzerName][$AktuellerPfad][$1][$2]"
  85. }
  86.  
  87. # ReturnLog:
  88. # Tr„gt den Rckgabewert eines Befehls ins Logbuch ein
  89. # Parameter: 1
  90. #    $1: Befehls-Returnwert
  91.  
  92. function ReturnLog {
  93.     Log "[$1]"
  94. }
  95.  
  96.  
  97. # HoleEingabe:
  98. # Um auszuschliežen, daž der Benutzer Zugriff auf den Rechner
  99. # bekommt, indem er sowas wie 'cd tex `c:\\bin\\sh >AUX: <AUX:`'
  100. # angibt, sind einige Zeichen fr den User tabu. CoSHy expandiert
  101. # aber jedesmal bei Benutzung einer Variablen. Mittels eines Tips
  102. # von Wolfgang gehe ich nun so vor:
  103. # Variable(n) einlesen, ins Environment exportieren und dort mittels
  104. # eines externen Programms (checkenv) testen. Falls Fehler auftraten,
  105. # aus dem Environment mittels verbapp ins Logbuch schreiben. verbapp
  106. # wird auch im Mail-System benutzt, um innerhalb von Mail alle Zeichen
  107. # zuzulassen. Die Mailzeilen expandiert CoSHy nie.
  108. # Parameter:
  109. #    $1: Variablennamen (ggf. mehrere in "", ggf. auch "-n ...")
  110.  
  111. function HoleEingabe {
  112.     if ! get $TIMEOUT $1; then
  113.         Send "TimeOut"
  114.         Log "TimeOut"
  115.         hangup
  116.         Befehl="quit"
  117.         Commandline=""
  118.         exit 1
  119.     fi
  120.     if [ $Modem -eq 1 ]; then
  121.         if ! carrier; then
  122.             Send "No carrier"
  123.             Log "No carrier"
  124.             hangup
  125.             Befehl="quit"
  126.             Commandline=""
  127.             exit 1
  128.         fi
  129.     fi
  130.     export $1
  131.     if ! checkenv $1; then
  132.         Send "!Unerlaubtes Zeichen"
  133.         Log "[Unerlaubtes Zeichen:]"
  134.         verbapp $LogDatei $1
  135.         exit 1
  136.     fi
  137.     exit 0
  138. }
  139.  
  140. # MyEval:
  141. # Evaluiert ein Server-Kommando als CoSHy-Befehl
  142. # und Eintrag ins Logbuch
  143.  
  144. function MyEval {
  145.     BefehlsLog "$Befehl" "$Commandline"
  146.         eval Server$Befehl
  147.         Ret=$?
  148.         if [ $Ret -ne 0 ]; then
  149.             Send "!error"
  150.         fi
  151.     ReturnLog $Ret
  152. }
  153.  
  154. # IfBefAlias:
  155. # $Befehl duch $2 ersetzen, falls $Befehl=$1
  156. # Parameter: 2
  157. #    $1: Test
  158. #    $2: Ersetzung
  159. # GlobalIN:  $Befehl
  160. # GlobalOUT: $Befehl
  161.  
  162. function IfBefAlias {
  163.     if [ "$Befehl" = "$1" ]; then
  164.         Befehl="$2"
  165.     fi
  166. }
  167.  
  168. # BefehlsAlias:
  169. # Liste der Alias-Befehle abtesten
  170.  
  171. function BefehlsAlias {
  172.     IfBefAlias     ls         dir
  173.     IfBefAlias    ll        dir
  174.     IfBefAlias    exit     quit
  175.     IfBefAlias    bye        quit
  176.     IfBefAlias    hangup    quit
  177.     IfBefAlias    logout    quit
  178.     IfBefAlias    logoff    quit
  179.     IfBefAlias    find        search
  180.     IfBefAlias    list        help
  181.     IfBefAlias    "?"        help
  182. }
  183.  
  184. echo "Befehlsinterpreter"
  185.  
  186. # BefehlsSchleife:
  187. # Hauptschleife fr die Befehlseingabe
  188.  
  189. function BefehlsSchleife {
  190.     Befehl=""
  191.     while [ "$Befehl" != "quit" ]
  192.     do
  193. # Abbruch auf Serverseite erfragen
  194.         readkey 1m TEST
  195.         if [ "$TEST" = "q" ]; then
  196.             TEST=""
  197.             TimeOut
  198.         fi
  199.         send -n "$AktuellerPfad>"
  200.         Commandline=""
  201.         if HoleEingabe "Befehl Commandline"; then
  202.             BefehlsAlias
  203.             MyEval
  204.         fi
  205.     done
  206. }
  207.  
  208. # Starttext ausgeben und Login-Info
  209.  
  210. function StartText {
  211.     Send ""
  212.     cat $ServerPfad\\text\\start.txt >AUX:
  213.     Send ""
  214.     Send "Die Benutzung ist nur eingetragenen Usern gestattet. ? = Hilfe."
  215.     Send "Alle Eingaben werden zusammen mit Name und Zeit protokolliert."
  216.     Send ""
  217. }
  218.  
  219. # In der Login-Prozedur wird der Account getestet, ggf. abgelehnt,
  220. # oder bei Erfolg die Befehlsschleife aufgerufen.
  221.  
  222. function Login {
  223.     cd $PublicPfad
  224.     UserNummer=-1
  225.     UserName=""
  226.     send -n "Dein Name: "
  227.     if ! HoleEingabe BenutzerName; then
  228.         exit 1
  229.     fi
  230.     Log "Login: $BenutzerName"
  231.     getuser "$UserDatei" "\"$BenutzerName\""
  232.     UserNummer=$?
  233.     if [ $UserNummer -ne -1 ]; then
  234.         send -n "Dein Passwort (ohne Anzeige): "
  235.         if ! HoleEingabe "-n PassInput"; then
  236.             exit 1
  237.         fi
  238.         testpass "$UserPfad\\$UserNummer.p" "\"$PassInput\""
  239.         if [ $? -eq 0 ]; then
  240.             Send ""
  241.             Send ""
  242.             read AnrufNummer < $NummerFile
  243.             AnrufNummer=`expr $AnrufNummer + 1`
  244.             echo $AnrufNummer > $NummerFile
  245.             Send "Alles klar. Du bist der $AnrufNummer. Anrufer! Auf gehts..."
  246.             if [ $AnrufNummer -eq 1 ]; then
  247.                 Send "Na endlich. Da ist ja der erste Anruf!!!!"
  248.             fi
  249.             if [ $AnrufNummer -eq 13 ]; then
  250.                 Send "13! Du hast Pech und musst beim Stammtisch einen ausgeben!"
  251.             fi
  252.             if [ $AnrufNummer -eq 100 ]; then
  253.                 Send "Gratulation zum 100.!"
  254.             fi
  255.             if [ $AnrufNummer -eq 1000 ]; then
  256.                 Send "Der 1000. Anrufer! Beachtlich!"
  257.                 Send "Das gibt ein Guiness vom naechsten..."
  258.                 echo "$BenutzerName" > $SuperName
  259.             fi
  260.             if [ $AnrufNummer -eq 1001 ]; then
  261.                 Send "Der 1001. Anrufer! Schon wieder Pech!"
  262.                 read SName <$SuperName
  263.                 Send "Du musst dem 1000. ein Guiness ausgeben."
  264.                 Send "Das war $SName."
  265.             fi
  266.             Send ""
  267.             Log "Login akzeptiert. Nummer $AnrufNummer."
  268.             BefehlsSchleife
  269.             Log "Logout."
  270.             exit 0
  271.         else
  272.             Log "Passwd: $PassInput"
  273.             Send "Das wahr wohl nix..."
  274.             Log "Login abgelehnt."
  275.             exit 1
  276.         fi
  277.     else
  278.         Send "Dich kenn ich nich!"
  279.         Log "Benutzer unbekannt."
  280.         exit 1
  281.     fi
  282. }
  283.  
  284.  
  285. echo "Server-Befehle"
  286.  
  287. # In $AktuellerPfad wird immer der vollst„ndig expandierte Pfad gehalten.
  288. # Jetzt kann ein cd erstmal ausgefhrt werden. Ein externes Programm testet,
  289. # ob der erreichte Pfad noch gltig ist (innerhalb von $PublicPfad liegt).
  290. # Wenn nicht, wird der alte Pfad restauriert, sonst ist alles klar.
  291.  
  292. function Servercd {
  293.     AlterPfad="$AktuellerPfad"
  294.      cd $AktuellerPfad\\$Commandline >$Schrott
  295.     Ret=$?
  296.     # Wenn kein Parameter, dann PublicPfad.
  297.     if [ "$Commandline" = "" ]; then
  298.         Ret=1
  299.     fi
  300.     if [ $Ret -ne 0 ]; then
  301.         cd $PublicPfad\\$Commandline >$Schrott
  302.         Ret=$?
  303.     fi
  304.     if [ $Ret -ne 0 ]; then
  305.         Send "!Ungltiges Verzeichnis"
  306.         Log "-n [Ungltiges Verzeichnis]"
  307.     fi
  308.     cd "$ServerPfad"
  309.     AktuellerPfad="$OLDPWD"
  310.     cd "$AktuellerPfad"
  311.     if ! testpfad "$AktuellerPfad" "$PublicPfad"; then
  312.         AktuellerPfad=$AlterPfad
  313.         cd $AktuellerPfad
  314.         Send "!Unerlaubter Pfad."
  315.         Log "-n [Unerlaubter Pfad]"
  316.     fi
  317. }
  318.  
  319. function Serverquit {
  320.     Send "Bis denn ..."
  321. }
  322.  
  323. function Servernews {
  324.     Send ""
  325.     cat $ServerPfad\\text\\news.txt >AUX: <AUX:
  326.     Send ""
  327. }
  328.  
  329. function Serverhelp {
  330.     Send ""
  331.     cat $ServerPfad\\text\\hilfe.txt >AUX: <AUX:
  332.     Send ""
  333. }
  334.  
  335. function Serverxhelp {
  336.     Send ""
  337.     cat $ServerPfad\\text\\xhilfe.txt >AUX: <AUX:
  338.     Send ""
  339. }
  340.  
  341. function Serversearch {
  342.     if testfile "$Commandline"; then
  343.         find "$PublicPfad" -name "$Commandline" -print >AUX: <AUX:
  344.     else
  345.         Send "!Unerlaubter Dateizugriff"
  346.         Log "-n [Unerlaubte Datei]"
  347.     fi
  348. }
  349.  
  350. # Kleines Mailsystem. verbapp erf„lt els ersten Parameter eine Datei, an
  351. # die es den Inhalt der Environment-Variablen $2 anh„ngt. Mittels eines
  352. # vorangestellten Minuszeichens kann direkt ein String bergeben werden.
  353. # Auf diese Weise wird jegliche Expansion in Mails durch CoSHy verhindert.
  354. # Wird der User nicht gefunden (oder ist der Parameter leer), so wird die
  355. # eigene Mailbox gezeigt.
  356.  
  357. function Servermail {
  358.     getuser "$UserDatei" "\"$Commandline\""
  359.     MailNummer=$?
  360.     if [ $MailNummer -ne -1 ]; then
  361.         MailDatei=$MailPfad\\$MailNummer.msg
  362.         Line="================================================="
  363.         export Line 
  364.         verbapp $MailDatei Line
  365.         Line="Mail von $BenutzerName am `datum`"
  366.         export Line 
  367.         verbapp $MailDatei -" " Line
  368.         ret=0;
  369.         while [ $ret -eq 0 ]
  370.         do
  371.             Send "-n >"
  372.             get $TIMEOUT Line
  373.             if [ $? -eq 1 ]; then
  374.                 Log "TimeOut"
  375.                 Send "TimeOut"
  376.                 hangup
  377.                 exit 1
  378.             fi
  379.             export Line
  380.             verbapp $MailDatei Line
  381.             ret=$?
  382.         done
  383.         Line="================================================="
  384.         export Line; verbapp $MailDatei Line
  385.     else
  386.         if [ -f $MailPfad\\$UserNummer.msg ]; then
  387.             cat $MailPfad\\$UserNummer.msg >AUX:
  388.             Send ""
  389.         else
  390.             Send "Keine Mails vorhanden."
  391.         fi
  392.     fi
  393.     # Returnwert mittels Kommentar auf 0
  394. }
  395.  
  396. # Funktion zum L”schen der (eigenen) Mailbox.
  397.  
  398. function Servermaildel {
  399.     rm $MailPfad\\$UserNummer.msg
  400. }
  401.  
  402. function Serverdir {
  403.     if testfile "$Commandline"; then
  404.         Send ""
  405.         ls -l $Commandline >AUX: <AUX:
  406.     else
  407.         Send "!Unerlaubter Dateizugriff"
  408.         Log "-n [Unerlaubte Datei]"
  409.     fi
  410. }
  411.  
  412. function Serverpack {
  413.     if [ "$Commandline" = "lzh" ]; then
  414.         PackExt="lzh"
  415.         PackBef="lzh.ttp a -r"
  416.         PackEnd="\\"
  417.         Send "LZH-Packen eingestellt."
  418.         exit
  419.     fi
  420.     if [ "$Commandline" = "zip" ]; then
  421.         PackExt="zip"
  422.         PackBef="zip.ttp -arp" 
  423.         PackEnd=""
  424.         Send "ZIP-Packen eingestellt."
  425.         exit
  426.     fi
  427.     if [ "$Commandline" = "zoo" ]; then
  428.         PackExt="zoo"
  429.         PackBef="zoo.ttp ah//" 
  430.         PackEnd=""
  431.         Send "ZOO-Packen eingestellt."
  432.         exit
  433.     fi
  434. }
  435.  
  436. PackExt="zip"
  437. PackBef="zip.ttp -arp"
  438. PackEnd=""
  439.  
  440. function Serverget {
  441.     if testfile "$Commandline"; then
  442.         for Name in $Commandline
  443.         do
  444.             if [ -d $Name ]; then
  445.                 Send "Verzeichnis angefordert. Starte Packer."
  446.                 Log "-n [Packer ($PackExt)]"
  447.                 Packe='$PackBef $TempPfad\\TMP.$PackExt $Name$PackEnd'
  448.                 eval "$Packe >AUX:"
  449.                 mv "$TempPfad\\TMP.$PackExt" "$TempPfad\\$Name.$PackExt" 
  450.                 Send ""
  451.                 Send ""
  452.                 if [ $? -eq 0 ]; then
  453.                     upload $TempPfad\\$Name.$PackExt
  454.                 else
  455.                     Send "Fehler beim Packen."
  456.                     Log "[Packfehler]"
  457.                 fi
  458.                 rm $TempPfad\\$Name.$PackExt
  459.             else
  460.                 if [ -f $Name ]; then
  461.                     upload "$Name"
  462.                 else
  463.                     Send "Datei nicht gefunden."
  464.                     Log "-n [Datei fehlt]"
  465.                 fi
  466.             fi
  467.         done
  468.     else
  469.         Send "!Unerlaubter Dateizugriff"
  470.         Log "-n [Unerlaubte Datei]"
  471.     fi
  472. }
  473.  
  474. # Upload (in Richtung Server) nicht ganz automatisch bearbeiten, und von
  475. # hier nochmal sicherstellen, daž alles ins incoming-Verzeichnis kommt.
  476.  
  477. function Server**B00000000000000 {
  478.     download -p "$ServerPfad\\pub\\incoming" "$Commandline"
  479. }
  480.  
  481. # Download (vom Server) nur ber get zulassen und hier abfangen:
  482.  
  483. function Server**B0100000023be50 {
  484.     Send "Automatisches Download nicht gestattet."
  485.     Befehl=""
  486.     Commandline=""
  487. }
  488.  
  489. function ServerŠ**B0100000023be50 {
  490.     Send "Automatisches Download nicht gestattet."
  491.     Befehl=""
  492.     Commandline=""
  493. }
  494.  
  495. function Serverput {
  496.     Send ""
  497.     Send "Upload kann automatisch durchgefuehrt werden."
  498.     Send "Starte an Deinem lokalen Rechner einfach"
  499.     Send "einen Zmodem-Upload. Die Datei landet hier in"
  500.     Send "$ServerPfad\\pub\\incoming\\"
  501.     Send ""
  502. }
  503.  
  504. function Serverview {
  505.     if testfile "$Commandline"; then
  506.         for Name in $Commandline
  507.         do
  508.             Send ""
  509.             Send "$Name:"
  510.             cat $Name >AUX: <AUX:
  511.             Send ""
  512.         done
  513.     else
  514.         Send "!Unerlaubter Dateizugriff"
  515.         Log "-n [Unerlaubte Datei]"
  516.     fi
  517. }
  518.  
  519. function Serverviewzip {
  520.     if testfile "$Commandline"; then
  521.         for Name in $Commandline
  522.         do
  523.             zip -v $Name >AUX: <AUX:
  524.         done
  525.     else
  526.         Send "!Unerlaubter Dateizugriff"
  527.         Log "-n [Unerlaubte Datei]"
  528.     fi
  529. }
  530.  
  531. function Serverviewlzh {
  532.     if testfile "$Commandline"; then
  533.         for Name in $Commandline
  534.         do
  535.             lzh v $Name >AUX: <AUX:
  536.         done
  537.     else
  538.         Send "!Unerlaubter Dateizugriff"
  539.         Log "-n [Unerlaubte Datei]"
  540.     fi
  541. }
  542.  
  543. function Serverviewzoo {
  544.     if testfile "$Commandline"; then
  545.         for Name in $Commandline
  546.         do
  547.             zoo v $Name >AUX: <AUX:
  548.         done
  549.     else
  550.         Send "!Unerlaubter Dateizugriff"
  551.         Log "-n [Unerlaubte Datei]"
  552.     fi
  553. }
  554.  
  555. function Serveruser {
  556.     Send "Eingetragene Benutzer:"
  557.     cat $UserDatei >AUX: <AUX:
  558.     Send ""
  559. }
  560.  
  561. # Passwort „ndern
  562.  
  563. function Serverpasswd {
  564.     Send ""
  565.     Send "Die Passworteingabe wird nicht angezeigt."
  566.     Send "-n Neues Passwort>"
  567.     if HoleEingabe "-n NeuesPass"; then
  568.         Send ""
  569.         Send "-n nochmal zur Kontrolle>"
  570.         if HoleEingabe "-n NNeuesPass"; then
  571.             Send ""
  572.             if [ "$NeuesPass" = "$NNeuesPass" ]; then
  573.                 echo "$NeuesPass" > "$UserPfad\\$UserNummer.p"
  574.                 Send "Das neue Passwort wurde eingetragen."
  575.                 Log "Passwort eingetragen."
  576.             else
  577.                 Send "Verschiedene Passworte?"
  578.                 Send "Das Passwort wurde nicht ver„ndert."
  579.                 Log "Das Passwort wurde nicht ver„ndert."
  580.             fi
  581.         fi
  582.     fi
  583. }
  584.  
  585. echo "Gleich gehts los"
  586.  
  587. # Start des Hauptprogramms
  588.  
  589. # Hack zur Pfadeinstellung
  590. cd $PublicPfad
  591. cd $ServerPfad
  592. AktuellerPfad=$OLDPWD
  593. cd $AktuellerPfad
  594.  
  595. # PATH merken und neu setzen
  596. OLDPATH="$PATH"
  597. PATH="$ServerPfad\\bin"
  598. export PATH
  599.  
  600. # Zeilenenden konvertieren
  601. ctty crcrlf
  602.  
  603. # Kommunikation starten fr eine Anwahl, 3 erlaube Login-Versuche
  604.  
  605. function EinBenutzer {
  606.     flush
  607.     StartText
  608.     Send ""
  609.     a=1
  610.     while [ $a -le 3 ]
  611.     do
  612.         if Login; then
  613.             break 2
  614.         fi
  615.         a=`expr $a + 1`
  616.     done
  617.     Send ""
  618.     Send "Ende"
  619.     sleep 1s
  620.     flush
  621. }
  622.  
  623. # Im Modemberieb wartet die folgende Funktion auf Anrufe und startet 
  624. # die Aktionen fr einen Benutzer. In der Warteschleife ist ein Abbruch
  625. # des Servers durch die Taste "q" m”glich.
  626.  
  627. function WarteSchleife {
  628.     while [ 0 -eq 0 ]
  629.     do
  630.     
  631.         flush
  632.  
  633.         send "ATZ0S0=1#B1+FCLASS=6"
  634.         waitfor "OK"
  635.         echo ""
  636.  
  637.  
  638.         echo "Warte auf Anruf (Abbruch mit "q")"
  639.  
  640. # Der Zeittest mit $timcnt ist seltsam, aber so gemacht, weil 
  641. # timcnt=`expr $timcnt - 1`
  642. # dummerweise auf die Platte zugreift. Das belastet sogar
  643. # einen TT zu sehr!
  644.         
  645.         timcnt=""
  646.         
  647.         while ! carrier 
  648.         do
  649.             readkey -v 50m TEST
  650.             if [ "$timcnt" = "+++++++++++++++++++++++++++++++++++++++++++++++" ]; then
  651.                 timcnt=""
  652.                 if intime 07:00 07:10; then
  653.                     TEST=q
  654.                 fi
  655.             else
  656.                 timcnt="+$timcnt"
  657.             fi
  658.             if [ "$TEST" = "q" ]; then
  659.                 echo ""
  660.                 echo "Ok. Ich beende den Serverbetrieb..."
  661.                 echo "Es ist jetzt `datum`."
  662.                 TEST=""
  663.                 exit
  664.             fi
  665.         done
  666.         
  667.         echo "Carrier erkannt."
  668.         
  669.         if waitfor -i -t 30s "CONNECT"; then
  670.             if waitfor -i -t 500m "FAX"; then
  671.                 Log "[`datum`] FAX erkannt."
  672.     
  673.                 send 'at+flid='\"$MYFAXID\"
  674.                       waitfor OK; sleep 50m
  675.                 send 'at+fcr=1'
  676.                         waitfor OK; sleep 50m
  677.                 send 'at+fclass=2'
  678.                       waitfor OK; sleep 50m
  679.                 send 'at+faa=1'
  680.                       waitfor OK; sleep 500m
  681.     
  682.                 cd c:/office
  683.                 faxdrv a
  684.                 cd $OLDPWD
  685.                 Log "[`datum`] FAXbearbeitung beendet."
  686.  
  687.             else
  688.                 EinBenutzer
  689.             fi
  690.         fi
  691.         
  692.         hangup
  693.         echo "Aufgelegt."
  694.         flush
  695.         
  696.     done
  697.     echo ""
  698. }
  699.  
  700. # Der Unterschied zwischen Modem und Schnittstellen-Betrieb:
  701.  
  702. if [ $Modem -eq 1 ]; then
  703.     WarteSchleife
  704. else
  705.     EinBenutzer
  706. fi
  707.  
  708. flush
  709. send "+++ATHZ0S0=0"
  710. waitfor "OK"
  711.  
  712. echo ""    
  713. echo "Server beendet."
  714. echo "" >$Schrott
  715. rm $Schrott
  716.  
  717. # Pfad restaurieren
  718. PATH="$OLDPATH"
  719. export PATH
  720.  
  721. exit
  722.