' sms2mds - Script for posting sms messages to the maison-de-stuff
' Author: John Hawkins and Tom Rowan
' Updated: 21/01/2003
Const ForReading = 1
Const ForAppending = 8
dim wshShell, fso
Set wshShell = WScript.CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
public function DeleteMessage (nMessageNumber)
dim nExitStatus
nExitStatus = wshShell.Run ("gnokii.exe --deletesms SM " & nMessageNumber,5,true)
end function
public function LookupSender (sSendersNumber)
dim numbersFile, sFileLine, aEntryFields, sName, sThisNumber
sName = ""
Set numbersFile = fso.OpenTextFile("numbers.txt", ForReading)
do while (not numbersFile.AtEndOfStream) and (sName="")
sFileLine = numbersFile.ReadLine
aEntryFields = split (sFileLine,";")
sThisNumber = aEntryFields(1)
sThisNumber = Right (sThisNumber,6)
if sSendersNumber = sThisNumber then
sName = aEntryFields(0)
end if
loop
numbersFile.Close
LookupSender = sName
end function
public function LogMessageReceived (sMsgDateTime,sMsgNumber,sMsgText)
dim logFile
Set logFile = fso.OpenTextFile("logmessages.txt", ForAppending, true)
logFile.WriteLine sMsgDateTime & "," & sMsgNumber & "," & sMsgText
logFile.Close
end function
public function ProcessMessage (sMsgDateTime,sMsgNumber,sMsgText)
dim sMsgName, objHTTP, sTemp,sMessage,sLocation,sUrl
sMsgName = LookupSender ( Right(sMsgNumber,6) )
if sMsgName = "" then
sMsgName = "(unknown)"
end if
' wscript.echo ("Submit: " & sMsgDateTime & " - " & sMsgNumber & " - " & sMsgName & " - " & sMsgText)
sMessage = sMsgText
sLocation = escape ("[via SMS at " & sMsgDateTime & "]")
Set objHTTP = WScript.CreateObject("Coalesys.CSHttpClient.1")
objHTTP.RequestURL = "http://www.maison-de-stuff.net/cgi-bin/addmsg.pl"
objHTTP.RequestBody = ""
sTemp = escape (sMsgName)
objHTTP.RequestBody = objHTTP.RequestBody & "name=" & sTemp
sTemp = escape (sMessage)
objHTTP.RequestBody = objHTTP.RequestBody & "&message=" & sTemp
objHTTP.RequestBody = objHTTP.RequestBody & "&location=" & sLocation
objHTTP.RequestHeaders = ""
objHTTP.RequestHeaders = objHTTP.RequestHeaders & "User-Agent: " & "MDS-SMS-Gateway 0.1" & VBCRLF
objHTTP.RequestHeaders = objHTTP.RequestHeaders & "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, */*" & VBCRLF
objHTTP.RequestHeaders = objHTTP.RequestHeaders & "Accept-Language: en-us" & VBCRLF
objHTTP.RequestHeaders = objHTTP.RequestHeaders & "Content-Length: " & len(objHTTP.RequestBody) & VBCRLF
objHTTP.RequestHeaders = objHTTP.RequestHeaders & "Content-Type: application/x-www-form-urlencoded" & VBCRLF
objHTTP.RequestHeaders = objHTTP.RequestHeaders & "Cache-Control: no-cache" & VBCRLF
objHTTP.Execute("POST")
end function
public function ProcessMessagesFile
dim s, nLineNumber, sDateTime, sMessage, sSender, nDateLength, sSenderFields, nMessageNumber
Set ts = fso.OpenTextFile("messages.txt", ForReading)
nLineNumber = 0
Do While Not ts.AtEndOfStream
s = ts.ReadLine
if nLineNumber = 0 then
' ignore
nMessageNumber = int (left(s,2))
elseif nLineNumber = 1 then
' date/time
nDateLength = int ( Len(s) - 11 )
if nDateLength >=0 then
sDateTime = Right (s, nDateLength)
end if
elseif nLineNumber = 2 then
'sender
sSenderFields = split (s," ")
sSender = sSenderFields(1)
elseif nLineNumber = 3 then
'ignore
elseif nLineNumber = 4 then
'message
sMessage = s
'Add it to the log file
LogMessageReceived sDateTime,sSender,sMessage
'Process it and post it
ProcessMessage sDateTime, sSender, sMessage
' now delete it!
DeleteMessage nMessageNumber
end if
if nLineNumber = 5 then
nLineNumber = 0
else
nLineNumber = nLineNumber + 1
end if
Loop
ts.Close
end function
public function GenerateMessagesFile
dim nExitStatus
nExitStatus = wshShell.Run ("getsms.bat",5,true)
end function
public function DeleteMessagesOnPhone
dim nExitStatus
nExitStatus = wshShell.Run ("deletesms.bat",5,true)
end function
' ------------------
'Main Program
' ------------------
GenerateMessagesFile
ProcessMessagesFile
'DeleteMessagesOnPhone
' ------------------