CODE
-----------------------------------------------------------------
-- Name: sipPing.lua
-- Author: Jazz Alyxzander
-- Required INM version: 3.3 (Build 2685)
-- Version: 1.0
-- Date: 2009-02-21
-- Description: This script is used to ensure a Server Response from a Asterisk/Sip server.
-- This does not Authenticate and only detects response from the host.
--
-- Arguments:
-- 1) portNumber
-- 2) Time to wait in Seconds
-----------------------------------------------------------------
--// ===========================================================================
--// Functions
--// ===========================================================================
--// ===========================================================================
--// Variables
--// ===========================================================================
--// Script Vars
debugOn = 0
iArgumentsRequired = 1
--// Var List
iReadSize = 256
iRemoteport = 5060
iTimewait = 0
sRequiredCode = "404"
--// ===========================================================================
--// Initialize Script
--// ===========================================================================
--// Ensure Arguments are entered Correctly
if GetArgumentCount() < iArgumentsRequired then
SetExitStatus("Incorrect Number of Paramaters", false);
return
else
iRemoteport = tonumber(GetArgument(0))
iTimewait = tonumber(GetArgument(1))
end
-- // Create Socket
socket = TLuaSocket:new()
iRet = socket:OpenUDP(iRemoteport)
if iRet==0 then
print("Cannot open port "..iPort.." Error code:"..GetLastError())
SetExitStatus("Socket Error",false)
else
print("Socket Connected on Port:" .. iRemoteport );
end
--// ===========================================================================
--// Send SIP invite
--// ===========================================================================
--// Build Data String
sendData = "OPTIONS ".." SIP/2.0\n";
sendData = sendData.."CSeq: 1 OPTIONS\n";
--// Write to Socket
socket:Write(sendData, string.len(sendData))
--// ===========================================================================
--// Check for response
--// ===========================================================================
recData = socket:Read(iReadSize, iTimewait)
print("Data received from server:")
print(recData)
--// Return if nodata was read of stream
if recData == nill then
print("No Response Recieved")
SetExitStatus("No Response Recieved", false)
return
end
--// Parse Data
iIndexStart = string.find(recData," ")+1
iIndexEnd = string.find(recData," " , iIndexStart)-1
errorCode = string.sub(recData,iIndexStart, iIndexEnd);
--// ===========================================================================
--// Return
--// ===========================================================================
if (sRequiredCode == errorCode) then
SetExitStatus("Sip Server Responded", true)
else
SetExitStatus("Error (Unknown): Server returned an Unknown error", false)
end
--// ===========================================================================
--// ~
--// ===========================================================================
socket:Close()
-- Name: sipPing.lua
-- Author: Jazz Alyxzander
-- Required INM version: 3.3 (Build 2685)
-- Version: 1.0
-- Date: 2009-02-21
-- Description: This script is used to ensure a Server Response from a Asterisk/Sip server.
-- This does not Authenticate and only detects response from the host.
--
-- Arguments:
-- 1) portNumber
-- 2) Time to wait in Seconds
-----------------------------------------------------------------
--// ===========================================================================
--// Functions
--// ===========================================================================
--// ===========================================================================
--// Variables
--// ===========================================================================
--// Script Vars
debugOn = 0
iArgumentsRequired = 1
--// Var List
iReadSize = 256
iRemoteport = 5060
iTimewait = 0
sRequiredCode = "404"
--// ===========================================================================
--// Initialize Script
--// ===========================================================================
--// Ensure Arguments are entered Correctly
if GetArgumentCount() < iArgumentsRequired then
SetExitStatus("Incorrect Number of Paramaters", false);
return
else
iRemoteport = tonumber(GetArgument(0))
iTimewait = tonumber(GetArgument(1))
end
-- // Create Socket
socket = TLuaSocket:new()
iRet = socket:OpenUDP(iRemoteport)
if iRet==0 then
print("Cannot open port "..iPort.." Error code:"..GetLastError())
SetExitStatus("Socket Error",false)
else
print("Socket Connected on Port:" .. iRemoteport );
end
--// ===========================================================================
--// Send SIP invite
--// ===========================================================================
--// Build Data String
sendData = "OPTIONS ".." SIP/2.0\n";
sendData = sendData.."CSeq: 1 OPTIONS\n";
--// Write to Socket
socket:Write(sendData, string.len(sendData))
--// ===========================================================================
--// Check for response
--// ===========================================================================
recData = socket:Read(iReadSize, iTimewait)
print("Data received from server:")
print(recData)
--// Return if nodata was read of stream
if recData == nill then
print("No Response Recieved")
SetExitStatus("No Response Recieved", false)
return
end
--// Parse Data
iIndexStart = string.find(recData," ")+1
iIndexEnd = string.find(recData," " , iIndexStart)-1
errorCode = string.sub(recData,iIndexStart, iIndexEnd);
--// ===========================================================================
--// Return
--// ===========================================================================
if (sRequiredCode == errorCode) then
SetExitStatus("Sip Server Responded", true)
else
SetExitStatus("Error (Unknown): Server returned an Unknown error", false)
end
--// ===========================================================================
--// ~
--// ===========================================================================
socket:Close()