52 lines
1.5 KiB
Lua
52 lines
1.5 KiB
Lua
-- Telnet client
|
|
--[[ A telnet server T. Ellison, June 2019
|
|
|
|
This version of the telnet server demonstrates the use of the new stdin and stout
|
|
pipes, which is a C implementation of the Lua fifosock concept moved into the
|
|
Lua core. These two pipes are referenced in the Lua registry.
|
|
|
|
]]
|
|
--luacheck: no unused args
|
|
|
|
local telnetS = nil
|
|
|
|
local function telnet_session(socket)
|
|
local node = node
|
|
local stdout
|
|
|
|
local function output_CB(opipe) -- upval: socket
|
|
stdout = opipe
|
|
local rec = opipe:read(1400)
|
|
if rec and (#rec > 0) then socket:send(rec) end
|
|
return false -- don't repost as the on:sent will do this
|
|
end
|
|
|
|
local function onsent_CB(skt) -- upval: stdout
|
|
local rec = stdout:read(1400)
|
|
if rec and #rec > 0 then skt:send(rec) end
|
|
end
|
|
|
|
local function disconnect_CB(skt) -- upval: socket, stdout
|
|
node.output()
|
|
socket, stdout = nil, nil -- set upvals to nl to allow GC
|
|
end
|
|
|
|
node.output(output_CB, 0)
|
|
socket:on("receive", function(_,rec) node.input(rec) end)
|
|
socket:on("sent", onsent_CB)
|
|
socket:on("disconnection", disconnect_CB)
|
|
print( ("Welcome to the Wordclock. (%d mem free, %s)"):format(node.heap(), wifi.sta.getip()))
|
|
print("- mydofile(\"commands\")")
|
|
print("- storeConfig()")
|
|
print("Visite https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en for further commands")
|
|
uart.write(0, "New client connected\r\n")
|
|
end
|
|
|
|
|
|
-- Telnet Server
|
|
function startTelnetServer()
|
|
telnetS=net.createServer(net.TCP, 180)
|
|
telnetS:listen(23, telnet_session)
|
|
print("Telnetserver started")
|
|
end
|