; $VER: BBBS.NComm.script 4.1 (8.8.95) ; BBBS NComm Script for THOR ; By Eivind Nordseth, Ultima Thule Software REQUEST OFF set $fixtimeout = "" set $rengrab = "" set $doctrlx = "FALSE" set $done = "FALSE" cli $THORPath"bin/ScriptServ \""$BBSName"\" WRITECFG EV 7 EV 8 EV 11 EV 12" if exists "t:NoLogOut" then cli "delete >nil: t:NoLogOut" if exists "t:DoLogOut" then cli "delete >nil: t:DoLogOut" varfile "t:"$BBSName".CONFIG" readvar $CfgVer readvar $BBSID readvar $BBSType readvar $Path readvar $PostConf readvar $UpLoadDir readvar $UserName readvar $UserStreet readvar $UserAddress readvar $UserCountry readvar $UserPhone readvar $NewFiles readvar $AutoPDnl readvar $AutoLogoff readvar $UseColors readvar $AnsiMenues readvar $Bulletins readvar $ReplyPacket varfile close if !$CfgVer == "4" then message "Incompatible version of ScriptServ" if !$CfgVer == "4" then goto AllDone if $ReplyPacket == "" then set $ReplyPacket = $BBSID".REP" cli "delete >nil: \"t:"$BBSName".CONFIG\"" set $LogFile = $Path"ScriptMsg.txt" when "\r\nNO CARRIER\r\n" goto AllDone autoxfer off ; Turn off G&R commands autoup off ; Turn off Zmodem autoupload autodown on ; Turn on Zmodem autodownload menuselect TRANSLATE 1 8 ; Use IBN character set set $charset = "IBN" ; Use IBN character set converse "FIRST name?" $UserName" Q\n" converse "will echo):" "\p\n" when "--more--" send "C" when "Trykk " send "\n" set $docmd = "CHAT N U L 0 MF 50 S IBN\n" gosub DoCommand dwhen "Trykk " wait "Command" set $doctrlx = "TRUE" if !exists "t:"$BBSName".EVENTS" then goto afterEvents varfile "t:"$BBSName".EVENTS" eventLoop: set $done = "FALSE" readvar $eventnr readvar $event if $eventnr == "EOF" then goto evLoopEnd if $event == "EOF" then goto evLoopEnd if $event == "7" then gosub ConfigureBBS if $event == "8" then gosub SendUserInfo if $event == "11" then gosub CommandEvent if $event == "12" then gosub AutoLogOff if $done == "TRUE" then cli "run >nil: "$THORPath"bin/ScriptServ \""$BBSName"\" DONE "$eventnr if !$done == "TRUE" then cli "run >nil: "$THORPath"bin/ScriptServ \""$BBSName"\" ERROR "$eventnr goto eventLoop evLoopEnd: varfile close afterEvents: ;***************** Set correct grab format set $docmd = "U GF H\n" gosub DoCommand ;***************** Send reply packet if !exists $UpLoadDir$ReplyPacket then goto AfterReplyPacket set $docmd = "Q MU\n" gosub DoCommand set $reperr = "FALSE" when "Hippo fatal error:" set $reperr = "TRUE" wait "Starting ZModem" upload $UpLoadDir$ReplyPacket,Z gosub NoTimeout capture $Path"HIPPOMsg.txt" wait "Main Command" capture off dlwhen if $reperr == "TRUE" then goto RepFileFail cli "delete >nil: "$UpLoadDir$ReplyPacket cli "delete >nil: "$Path"HIPPOMsg.txt" cli "run >nil: "$THORPath"bin/ScriptServ \""$BBSName"\" PACKAGEDONE" set $doctrlx = "TRUE" goto AfterReplyPacket RepFileFail: set $appendsource = $Path"HIPPOMsg.txt" set $appenddest = $LogFile gosub AppendFile set $doctrlx = "TRUE" AfterReplyPacket: ;***************** Grab messages set $rengrab = "y" set $docmd = "R DUMP ALL\n" gosub DoCommand when "<0>" goto grabd converse "Command" "SE\n" gosub NoTimeout set $rengrab = "y" grabd: dlwhen ;***************** Ready for logout if exists "t:DoLogOut" then goto DoLogOut if $AutoLogoff == "n" then goto NoLogOut if exists "t:NoLogOut" then goto NoLogOut DoLogOut: set $docmd = "CHAT A U L 30 MF 0\n" gosub DoCommand set $docmd = "G Y N Y\n" gosub DoCommand when "\r\nNO CARRIER\r\n" goto Hanged delay 2 repeat hangup delay 2 until !CARRIER Hanged: dlwhen goto AllDone NoLogOut: set $docmd = "CHAT A U L 30 MF 0 W R\n" gosub DoCommand dwhens timeout 0 AllDone: request on end Hung: beep message "\nI think the board has hung." message "\nTurn off this script within 20 seconds to stop me from logging out !!" delay 20 beep message "\nWARNING: Logout in progress.\n" hangup goto AllDone SysOp: send "Sorry, you are trying to chat with a script.\n" send "Please put me back to the BBS at once.\n" set $Timeouts = "0" wait "SYSOP is going offline!" set $Timeouts = "0" return ;************************************************ DoCommand: if $doctrlx == "TRUE" then send "^Z" converse "Command" $docmd if !$rengrab == "" then gosub RenameGrab if !$fixtimeout == "" then gosub SetupTimeout set $doctrlx = "FALSE" return ;************************************************ NoTimeout: set $fixtimeout = "d" timeout 0 return SetupTimeout: set $fixtimeout = "" set $Timeouts = "0" timeout 60 gosub SendCTRLX return SendCTRLX: set $fixtimeout = "d" if $Timeouts == "2" then timeout 20 gosub Hung if $Timeouts == "2" then send "^Z" if $Timeouts == "1" then send $docmd if $Timeouts == "1" then set $Timeouts = "2" if $Timeouts == "0" then send "^Z" if $Timeouts == "0" then set $Timeouts = "1" return Hung: beep message "\nI think the board has hung." message "\nTurn off this script within 20 seconds to stop me from logging out !!" delay 20 beep message "\nWARNING: Logout in progress.\n" hangup goto AllDone ;************************************************ RenameGrab: set $rengrab = "" cli $THORPath"bin/ScriptServ \""$BBSName"\" RENAMEGRAB" cli "run >nil: sys:rexxc/rx 'address THOR.01 RESCAN'" return ;************************************************ Startlogfile: if !exists $LogFile then write $LogFile "Messages from script:\n" write $LogFile "Error in event nr "$eventnr":\n" return ;************************************************ ; Append a file to the en of the other. ; Uses variables: ; $appendsource - File to append. ; $appenddest - Destination. AppendFile: if !exists $appenddest then goto afNotExists cli "join >nil: \""$appenddest"\" \""$appendsource"\" TO \""$appenddest".tmp\"" cli "delete >nil: \""$appenddest"\"" cli "rename >nil: \""$appenddest".tmp\" \""$appenddest"\"" cli "delete >nil: \""$appendsource"\"" return afNotExists: cli "rename >nil: \""$appendsource"\" \""$appenddest"\"" return ;************************************************ ; Do a custom command ; Uses variables: ; $commandstring - Command to execute. CommandEvent: readvar $commandstring write $LogFile "Executing custom command:\n" set $docmd = $commandstring"\n" gosub DoCommand capture $LogFile gosub NoTimeout when "File Command" goto CmdEvDone when "Main Command" goto CmdEvDone when "Utility Command" goto CmdEvDone when "SYSOP Command" goto CmdEvDone when "SIGOP Command" goto CmdEvDone when "Misc Command" goto CmdEvDone wait "Read Command" CmdEvDone: dlwhen dlwhen dlwhen dlwhen dlwhen dlwhen capture off write $LogFile "\n" set $done = "TRUE" set $doctrlx = "TRUE" return ;************************************************ ; Send user info ; Uses variables: ; $msgfile - file user info is in SendUserInfo: readvar $msgfile set $docmd = "U RES\n" gosub DoCommand wait "--7-" send "^KC" ascsend $Path$msgfile send "\w^Z" wait "Command" set $done = "TRUE" set $doctrlx = "TRUE" return ;************************************************ ; Set up BBS configuration ConfigureBBS: set $docmd = "U TE ANSI\n" gosub DoCommand set $docmd = "COL\n" set $cfgset = $UseColors gosub CfgEnable set $docmd = "ED FSE\n" gosub DoCommand set $docmd = "REV\n" set $cfgset = "y" gosub CfgEnable set $docmd = "T Z\n" gosub DoCommand set $docmd = "AF L\n" gosub DoCommand set $docmd = "U A\n" gosub DoCommand converse "street address" "^Z"$UserStreet"\n" converse "code and state" "^Z"$UserAddress"\n" if $UserPhone == "" then set $UserPhone = "-" converse "your phone number" "^Z"$UserPhone"\n" converse "date of birth" "\n" set $docmd = "R MODE Mark\n" gosub DoCommand wait "Command" set $done = "TRUE" set $doctrlx = "TRUE" return CfgEnable: set $scfenabled = "n" when "enabled" set $scfenabled = "y" gosub DoCommand wait "Command" dlwhen set $doctrlx = "TRUE" if !$scfenabled == $cfgset then gosub DoCommand return ;************************************************ ; Set the autologoff flag. ; Uses variables: ; $boolean - Logoff (y/n) AutoLogOff: readvar $boolean set $AutoLogoff = "y" if $boolean == "0" then set $AutoLogoff = "n" set $done = "TRUE" return