For those of you communicating over the Internet, you may sometimes need to know the “real-world” (WAN) IP address of the PAC running your strategy.
I’ve posted a few other examples of grabbing info off the Internet in various posts (like this one), but just getting this one four-byte piece of IP Address info can essentially be done with one call to the PAC Control HttpGet command. Just make sure your PAC has the DNS and Gateway IP addresses configured on it.
See attached chart which you can import into your 9.1 PAC Control Basic or better strategy with sample code in both regular (action) blocks or OptoScript.
In case you don’t need all that or have a different version of PAC Control, here’s a little snippet of OptoScript code:
// Initialize the tables which will return data from the server MoveToStrTableElements("", 0, -1, stHttpResponseHeader); MoveToStrTableElements("", 0, -1, stHttpResponseBody); MoveToStrTableElements("", 0, -1, stHttpGetHeader); nSendStatus = [B]HttpGet[/B]( stHttpResponseBody, // Return body data dest string table stHttpResponseHeader, // Return header data dest string table stHttpGetHeader, // Source body data string table 0, // 0 for non-secure, <> 0 for SSL "/", // URI nHttpStatus, // Status returned by HTTP server 80, // Port to which you want to connect "icanhazip.com" ); // Address, (numeric or www.icanhazip.com, etc) // "checkip.dyndns.com" ); // this similar website requires more parsing on what's returned if ( (nSendStatus == 0) and (nHttpStatus == 200)) then // odds are good the command worked if we get these values back sIP_as_string = stHttpResponseBody; // at this point, sTemp should include only the IP address in this form: A.B.C.D nIP_Integer = IpAddressStringToInt32(sIP_as_string); endif
Happy web surfing from your PAC!