'<script language="vbscript">
OPTION EXPLICIT
on error resume next



DIM strReturn
strReturn = getPublicIP()

'save IP to file
DIM fs
SET fs = CreateObject("Scripting.FileSystemObject")
fs.CreateTextFile("data\publicIP.txt", true).Write(strReturn)
SET fs = nothing



On Error Resume Next
wscript.Echo strReturn	'for cmd line
Echo strReturn		'for BGInfo
on error goto 0


'===================================================



FUNCTION getPublicIP()
	DIM strURL, strResponse
	strURL = "http://www.dslreports.com/whois"

	DIM oXMLHTTP: SET oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
	call oXMLHTTP.open("GET", strURL, false)
	on error resume next
		call oXMLHTTP.send()
	on error goto 0
	strResponse = oXMLHTTP.ResponseText
	SET oXMLHTTP = nothing

	'extract just IP;  pattern from: http://www.regexlib.com/REDetails.aspx?regexp_id=1291
	DIM oRegExp: SET oRegExp = new RegExp
	oRegExp.Pattern =  "((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})"
	oRegExp.Global = True
	IF oRegExp.test(strResponse) THEN strResponse = oRegExp.execute(strResponse)(0)
	SET oRegExp = nothing

	getPublicIP = strResponse
END FUNCTION


