-- grandMA Lua Plugin - UDP/TCP Send -- jason@badgersan.com -- 2018-04-08 -- 2018-04-13 Add error checking -- 2018-04-14 Adjust for console proper -- Use this in conjunction with a command line entry -- SetVar $sendmsg="cmdline_test"; Plugin stringsend local function warning() local version = gma.show.getvar('VERSION') if version:find('^3.3.') then return true else local funcName = debug.getinfo(1).source local txt = [[ Plugin %s does not work on V3.2 and lower. V%s may not work properly with this plugin. ]] return gma.gui.confirm('WARNING!!',txt:format(funcName, version)) end end local internal_name = select(1,...); local visible_name = select(2,...); gma.echo('Plugin '..internal_name..' was loaded'); -- you will see this message in the system monitor function stringSendScript() gmaStringsendIP = gma.show.getvar('PLUGIN_SEND_IP') gmaStringsendPort = gma.show.getvar('PLUGIN_SEND_PORT') msgFormat = gma.show.getvar('PLUGIN_MSG_FORMAT') local socket = require("socket/socket") local sendUDP = socket.udp() local sendTCP = assert(socket.tcp()) sendTCP:settimeout(1) if gmaStringsendIP == nil then gma.gui.msgbox("Plugin Stopped","Use String Setup to set IP and Port.") gma.echo('*** Aborted Plugin - Set IP and Port before using ***') return gma.feedback('String Send : Abort - Set IP and Port first') end if gmaStringsendPort == nil then gma.gui.msgbox("Plugin Stopped","Use String Setup to set IP and Port.") gma.echo('*** Aborted Plugin - Set IP and Port before using ***') return gma.feedback('String Send : Abort - Set IP and Port first') end if msgFormat == nil then gma.gui.msgbox("Plugin Stopped","Use String Setup to choose udp or tcp.") gma.echo('*** Aborted Plugin - Set format before using ***') return gma.feedback('String Send : Abort - Set format first') end if msgFormat == "udp" then gmaString = gma.show.getvar('SENDMSG') sendUDP:sendto(gmaString, gmaStringsendIP, gmaStringsendPort) gma.echo('*** UDP Message "'..gmaString..'" sent to '..gmaStringsendIP..':'..gmaStringsendPort..' ***') gma.feedback('UDP Send : "'..gmaString..'"') elseif msgFormat == "tcp" then gmaString = gma.show.getvar('SENDMSG') sendTCP:connect(gmaStringsendIP, gmaStringsendPort) sendTCP:send(gmaString) local status, err while true do status, err = sendTCP:receive() if status == nil then break end end sendTCP:close() if err == "Socket is not connected" then gma.echo('*** TCP Connect Error - No response from '..gmaStringsendIP..':'..gmaStringsendPort..' ***') gma.feedback('TCP Send Error') return elseif err == "timeout" then gma.echo('*** TCP Connect Error - No response from '..gmaStringsendIP..':'..gmaStringsendPort..' ***') gma.feedback('TCP Send Error') return end gma.echo('*** TCP Message "'..gmaString..'" sent to '..gmaStringsendIP..':'..gmaStringsendPort..' ***') gma.feedback('TCP Send : "'..gmaString..'"') else return gma.echo('*** Invalid format - choose tcp or udp ***') end end return stringSendScript;