In efforts to progress the request, I have reviewed the original extension "HTTP GET.ppx" (and some others) and have determined that it is possible to create system installed objects. With that in mind, I decided to try a well know system object "MSXML2.ServerXMLHTTP" to accomplish the HTTPS submission. The system object works as expected and seems to allow my requested functionality. There are unknowns as to the ppx framework so additional error checking and variable use could use some polish.
If there are more skilled forum members that can contribute error handling and variable understanding, it would be greatly appreciated.
I will be further experimenting with simple socket connections to check the availability of applications our organization must connect to regularly. It is understood that this functionality is "... somewhat outside the core value proposition of PingPlotter Pro" and will not be criticized if unsuccessful.
The following is the modified extension in text format as I was unable to attach it with File Manger (formatting is lost).
PingPlotter Script V1.00
This script allows you to "ping" a remote server using an HTTP conversation. This times the
entire conversation, and will depend partly on the size of the page that is being served,
plus the server performance. This script is somewhat outside the core value proposition
of PingPlotter Pro and has some limitations:
* There is no way to enter a full URL, since the "Address to trace"
strips off everything except for the base DNS Name or IP Address.
* When using this script, the intermediate hops have no way of handling
GET requests, so you only get latencies for the final destination.
* Latencies can exceed 32 seconds with an HTTP GET, and PingPlotter only
stores 32 seconds, so anything longer than 32 seconds either shows as a
timeout, or shows as 32 seconds.
* A lost packet in the TCP conversation gets represented as additional
latency, rather than lost packets since the TCP system is built to
correct for any lost packets.
* The VBSCript timer isn't all that accurate, and we're only that accurate
---- Do not edit this line, or anything above it ----
' Build the editor
EditorForm.Caption = "HTTP GET"
EditorForm.Height = 10
sub InitializeEngine( )
set Response = CreateAppObject("TScriptedTraceResponse")
Sub DoneEngine( )
set Response = Nothing
' property IPAddress: ShortString read FIPAddress write FIPAddress;
' property TargetName: ShortString read FTargetName write FTargetName;
' property CurMaxHops: Integer read FCurMaxHops write FCurMaxHops;
' property SampleNum: Integer read FSampleNum write FSampleNum;
' property NeedName: Boolean read FNeedName write FNeedName;
' property StartDelay: Integer read FStartDelay write FStartDelay;
' property NotifyHandle: THandle read FNotifyHandle write FNotifyHandle;
' property TimeoutTime: Integer read FTimeoutTime write FTimeoutTime;
' property ToSByte: Byte read FToSByte write FToSByte;
' property PacketType: TPacketType read FPacketType write FPacketType;
' property EngineSettings: TEngineSettings read FEngineSettings write FEngineSettings;
' Don't supress error handling..
on error goto 0
set gNewTrace = NewTrace
' Read the target server!
' *** IMPORTANT *** All settings should be read-only. The engine settings
' are not - write-safe as there are multiple threads involved.
set EngineSettings = NewTrace.EngineSettings
TargetServer = EngineSettings.AdditionalSettings("RemoteHTTPEngineTarget")
dim URL, URLParser
set URLParser = CreateAppObject( "TidURI" )
URL = Trim(gNewTrace.TargetName)
' Check and see if :// was specified in the address. If not, we need to
' add it...
if InStr(gNewTrace.TargetName, "://") = 0 then
URL = "http://" & URL
SpacePos = InStr(URL, " ")
if (SpacePos > 0) then
URL = Left(URL, SpacePos-1)
' Parse it, try and reformat it as needed.
URLParser.URI = URL
' Get it back out, reformatted.
URL = URLParser.URI
set URLParser = Nothing
' Get won't return until the request is complete. We'll get callbacks
' on "OnReadLine", though.
StartTime = Timer
Set xHttp = CreateObject("MSXML2.ServerXMLHTTP")
xHttp.Open "GET", URL, False
URL = ""
' 2 stands for SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS
' 13056 means ignore all server side cert error
'xHttp.setOption 2, 13056
' A 400+ means some kind of error - so let's call that a timeout.
'If ((Err.Number <> 0) or (HTTPRequest.ResponseCode >= 400)) then
If ( (Err.Number <> 0) ) then
Response.ElapsedTime = ppSAMPLETIMEOUT
' rtError = 0;
' rtReachedDestination = 1;
' rtUnreachable = 2;
' rtIntermediateHop = 3;
Response.ResponseType = rtError
'Response.ResponseType = xHttp.status
'if HTTPRequest.ResponseCode >= 400 then
' 'Response.Message = HTTPRequest.ResponseText
' Response.Message = xHttp.statusText
' Response.Message = Err.Description
on error goto 0
on error goto 0
' It's a response of some kind.
Response.ElapsedTime = (Timer - StartTime) * 1000
Response.ResponseType = rtReachedDestination
Response.Message = ""
Response.Hop = 1
Response.ReachedAddress = gNewTrace.IPAddress
Response.SampleNum = gNewTrace.SampleNum
Response.TargetAddress = gNewTrace.IPAddress
set gNewTrace = Nothing
Set xHttp = Nothing