######################################################################## # Module : Activity.hsm # Description: Full control while Hamster is online # Maintainer : Wilfried Kramer # Version : 2000-05-01 ######################################################################## # Should be loaded in a Script (.hsc) # Function is called with the name of a RAS-connection # a) stops the local servers from accepting data # b) performs tasks by KorrNews etc. # c) opens given connection, if not already online # d) open GMX-Server for sending mail, by using POP3 # e) post news (start threads) # f) Wait a while until getting more Mail # g) Pull News (start threads) # h) Sending Mail via GMX. Account is opened. # i) When finished close RAS-connection, if opened by Hamster # j) if RAS not opened by Hamster, and still open # j1) Wait 5 minutes # j2) Restart this routine # k) When everything finished, show message box ######################################################################## #!load hamster.hsm #!initialize debug( 255, "<<< module 'Activity.hsm' >>>" ) varset ( $Activity_NoConnect , 1 ) varset ( $Activity_NoOnline , 2 ) varset ( $Activity_waitOnline, 120 ) # 120 Sekunden varset ( $Activity_DUN_No , "" ) varset ( $Activity_PNikoma, "Nikoma by Call" ) varset ( $Activity_PTeldaNet, "TelDaNet" ) varset ( $Activity_P1und1, "1+1 Internet" ) varset ( $Activity_PCompuS, "Compuserve Ofake" ) varset ( $Activity_PVS, "VS.direkt" ) # feste Feiertage varset( $feiertag_liste, " 1.1. 1.5. 3.10. 24.12. 25.12. 26.12. 31.12. " ) # veränderliche Feiertage, je nach Jahr zu ändern $feiertag_liste = $feiertag_liste + "21.4. 23.4. 24.4. " # Ostern $feiertag_liste = $feiertag_liste + "1.6. 11.6. 12.6. " # Pfingsten return( 0 ) # Ermitteln, ob der angegebene Tag ein Feiertag ist. sub Feiertag( $heute ) var ( $Y, $M, $T, $hstr, $p ) decodetime ($heute, $Y, $M, $T) $hstr = " "+ str($T) +"."+ str($M) + ". " $p = Pos($hstr, $feiertag_liste) debug (1, "'"+$hstr+"' =", $p ) return ($p) endsub # Ermitteln, ob der angegebene Tag im Wochenende liegt. sub Wochenende( $Tag ) return ( ($Tag == 1) | ($Tag == 7) ) endsub # preparation and finishing sub prepare() debug (1, "preparation, stopping input-servers" ) HamWaitIdle HamMessage ( $HAM_MSG_RESET_COUNTERS, 0 ) # Reset Counter HamMessage ( $HAM_MSG_LOCALSMTP_ONOFF, 0 ) # Stop SMTP-Server HamMessage ( $HAM_MSG_LOCALNNTP_ONOFF, 0 ) # Stop NNTP-Server HamWaitIdle debug (1, "modifiying mails and news" ) Execute ("KorrNews\KorrNews.EXE Mails News", HamPath,0,true) # Postings & Mail Execute ("HAM.EXE import Groups\News.Out\*.msg", HamPath,0,true) # Postings importieren HamWaitIdle debug (1, "preparation finished, ready for online" ) endsub sub finish() debug (1, "finished tasks, restarting servers" ) HamWaitIdle HamMessage ( $HAM_MSG_LOCALSMTP_ONOFF, 1 ) # Restart SMTP-Server HamMessage ( $HAM_MSG_LOCALNNTP_ONOFF, 1 ) # Restart NNTP-Server HamWaitIdle debug (1, "servers started" ) endsub # perform all tasks to get new data and send out the waiting messages # activate named DUN-connection, if not online sub Transmit( $Use_RAS ) var ( $onlineWait ) # Wait until time is over Var ( $WasConnected, $Connection ) # Connection Management var ( $Newsservers, $ProvNews, $ProvSMTP ) # Available Servers $WasConnected = RasIsConnected print ("Data exchange, using '",$Use_RAS, "' as DUN" ) Label ( DoItAgainSam ) # for Restart, if already online if ((lowercase($Use_RAS)==$Activity_DUN_No) || ($Use_RAS=="")) warning ( "Connection not open yet" ) $onlineWait = time + $Activity_waitOnline # for max 1 minute while (! RasIsConnected ) sleep (3000) # check every 3 seconds if (time > $onlineWait) warning ( "No connection, please try later" ) return ( $Activity_NoOnline ) endif endwhile endif prepare() # prepare for start If ( ! $WasConnected ) Var ( $try ) $try = 0 while( HamRasDial( $Use_Ras ) != 0 ) inc( $try ) if( $try >= 3 ) warning( "Dialing ", $Use_Ras, " failed ", $try, " times!" ) finish() sleep( 5000 ) return ($Activity_NoConnect) endif sleep( 1000 ) endwhile else debug (1, "already connected, not dialed" ) $Use_RAS = "" endif $Connection = RasGetConnection $Newsservers = "news.cis.dfn.de,nntp;news.heise.de,nntp;news.netwarriors.org,nntp" $Newsservers = $Newsservers + ";stura.tua.tu-freiberg.de,nntp;wuff.inx.de,nntp" If ($Connection == $Activity_PNikoma) $ProvSMTP = "mail.nikoma.de" $ProvNews = "news.nikoma.de,nntp" $Newsservers = $Newsservers + ";news.nikoma.de,nntp" endif If ($Connection == $Activity_PTeldaNet) $ProvSMTP = "mail.telda.net" $ProvNews = "news.telda.net,nntp" $Newsservers = $Newsservers + ";news.telda.net,nntp" endif If ($Connection == $Activity_P1und1) $ProvSMTP = "mail.online.de" $ProvNews = "news.online.de,nntp" $Newsservers = $Newsservers + ";news.online.de,nntp" endif If ($Connection == $Activity_PCompuS) $ProvSMTP = "mail.compuserve.de" $ProvNews = "news.compuserve.de,nntp" $Newsservers = $Newsservers + ";news.compuserve.de,nntp" endif debug (1, $Newsservers ) # Hier werden die eigentlichen Aktivitäten ausgeführt, # nachdem die Verbindung steht # Post bei GMX prüfen, um senden zu können, abwarten hamfetchmail ( "pop.gmx.de", "pop3", "$3", "", "User1", "Filter1" ) hamfetchmail ( "pop3.web.de","pop3", "$4", "", "User3", "Filter3" ) # Zeit synchronisieren Execute ("C:\Programme\TimeSync\achron.exe", "",0,false) # News verschicken, ist teilweise langsam. Auch Mails senden. HamNewsPost ( $Newsservers ) hamwaitidle ( 250 ) HamMessage ( $HAM_MSG_LOCALNNTP_ONOFF, 1 ) # Restart NNTP-Server # Nur kurz warten (news.post beginnt), dann alle anderen Aktionen # parallel laufen lassen. hamwaitidle ( 250 ) # mail.pull von xxx@Nikocity und yyy@GMX. Neue News holen hamfetchmail ( "pop.nikocity.de", "pop3", "$2", "", "User2", "Filter2" ) hamfetchmail ( "pop.nikocity.de", "pop3", "$1", "", "User1", "Filter1" ) hamfetchmail ( "pop3.hamburg.de", "pop3", "$5", "", "User1", "Filter1" ) hamfetchmail ( "pop3.hamburg.de", "pop3", "$6", "", "User2", "Filter2" ) hamfetchmail ( "pop.compuserve.de","pop3","$7", "", "User1", "Filter1" ) HamNewsPull ( $Newsservers ) hamsendmail ( $ProvSMTP, "smtp" ) hamwaitidle ( 2000 ) #hamsendmail ( "mail.gmx.de", "smtp" ) #hamsendmail ( "smtp.web.de", "smtp" ) hamwaitidle ( 100 ) HamMessage ( $HAM_MSG_LOCALSMTP_ONOFF, 1 ) # Restart SMTP-Server hamwaitidle If (! $WasConnected) HamRasHangUp endif finish() If ( $WasConnected ) # bestehende Verbindung genutzt? $onlineWait = time + 5*60 # for max 5 min while (RasIsConnected) # while connected sleep ( 5000 ) # wait until (time > $onlineWait) # until next run If ( RasIsConnected ) # if still connected Goto ( DoItAgainSam ) # ;-) endif endif msgbox ( "Alles erledigt, fertig für Abruf" ) endsub