' 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
' ------------------