From b95d6a5b8a726468de939ddfdaa37600cb92faa4 Mon Sep 17 00:00:00 2001 From: Mattes D Date: Fri, 9 Oct 2015 18:33:57 +0200 Subject: [PATCH] Added 'net sclient' command to NetworkTest plugin. --- Server/Plugins/NetworkTest/Info.lua | 17 +++++++++ Server/Plugins/NetworkTest/NetworkTest.lua | 43 ++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/Server/Plugins/NetworkTest/Info.lua b/Server/Plugins/NetworkTest/Info.lua index d8c3095fe..2788d3674 100644 --- a/Server/Plugins/NetworkTest/Info.lua +++ b/Server/Plugins/NetworkTest/Info.lua @@ -90,6 +90,23 @@ g_PluginInfo = }, }, -- lookup + sclient = + { + HelpString = "Connects, as an SSL client, to a specified webpage (github.com by default) and downloads its front page using HTTPS", + Handler = HandleConsoleNetSClient, + ParameterCombinations = + { + { + Params = "", + Help = "Connects, as an SSL client, to github.com and downloads its front page using HTTPS", + }, + { + Params = "host [port]", + Help = "Connects, as an SSL client, to the specified host and downloads its front page using HTTPS", + }, + }, -- ParameterCombinations + }, -- sclient + udp = { Subcommands = diff --git a/Server/Plugins/NetworkTest/NetworkTest.lua b/Server/Plugins/NetworkTest/NetworkTest.lua index 22056d4e9..d6849ead6 100644 --- a/Server/Plugins/NetworkTest/NetworkTest.lua +++ b/Server/Plugins/NetworkTest/NetworkTest.lua @@ -371,6 +371,49 @@ end +function HandleConsoleNetSClient(a_Split) + -- Get the address to connect to: + local Host = a_Split[3] or "github.com" + local Port = a_Split[4] or 443 + + -- Create the callbacks "personalised" for the address: + local Callbacks = + { + OnConnected = function (a_Link) + LOG("Connected to " .. Host .. ":" .. Port .. ".") + LOG("Connection stats: Remote address: " .. a_Link:GetRemoteIP() .. ":" .. a_Link:GetRemotePort() .. ", Local address: " .. a_Link:GetLocalIP() .. ":" .. a_Link:GetLocalPort()) + LOG("Sending HTTP request for front page.") + a_Link:StartTLSClient() + a_Link:Send("GET / HTTP/1.0\r\nHost: " .. Host .. "\r\n\r\n") + end, + + OnError = function (a_Link, a_ErrorCode, a_ErrorMsg) + LOG("Connection to " .. Host .. ":" .. Port .. " failed: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")") + end, + + OnReceivedData = function (a_Link, a_Data) + LOG("Received data from " .. Host .. ":" .. Port .. ":\r\n" .. a_Data) + end, + + OnRemoteClosed = function (a_Link) + LOG("Connection to " .. Host .. ":" .. Port .. " was closed by the remote peer.") + end + } + + -- Queue a connect request: + local res = cNetwork:Connect(Host, Port, Callbacks) + if not(res) then + LOGWARNING("cNetwork:Connect call failed immediately") + return true + end + + return true, "SSL Client connection request queued." +end + + + + + function HandleConsoleNetUdpClose(a_Split) -- Get the port to close: local Port = tonumber(a_Split[4] or 1024)