basic nodemcu stuff in lua/
This commit is contained in:
50
lua/telnet.lua
Normal file
50
lua/telnet.lua
Normal file
@ -0,0 +1,50 @@
|
||||
-- implement:
|
||||
-- quit/ctrl-d disconnect
|
||||
-- security?????
|
||||
-- multiclient?
|
||||
-- ssh????
|
||||
-- environment??????????
|
||||
|
||||
|
||||
-- a simple telnet server
|
||||
|
||||
-- restart server if needed
|
||||
if telnet_srv ~= nil then
|
||||
telnet_srv:close()
|
||||
end
|
||||
telnet_srv = net.createServer(net.TCP, 180)
|
||||
|
||||
telnet_srv:listen(23, function(socket)
|
||||
local fifo = {}
|
||||
local fifo_drained = true
|
||||
|
||||
local function sender(c)
|
||||
if #fifo > 0 then
|
||||
c:send(table.remove(fifo, 1))
|
||||
else
|
||||
fifo_drained = true
|
||||
end
|
||||
end
|
||||
|
||||
local function s_output(str)
|
||||
table.insert(fifo, str)
|
||||
if socket ~= nil and fifo_drained then
|
||||
fifo_drained = false
|
||||
sender(socket)
|
||||
end
|
||||
end
|
||||
|
||||
node.output(s_output, 1) -- re-direct output to function s_ouput.
|
||||
|
||||
socket:on("receive", function(c, l)
|
||||
node.input(l) -- works like pcall(loadstring(l)) but support multiple separate line
|
||||
end)
|
||||
socket:on("disconnection", function(c)
|
||||
node.output(nil) -- un-regist the redirect output function, output goes to serial
|
||||
end)
|
||||
socket:on("sent", sender)
|
||||
|
||||
print("Welcome to NodeMCU world.")
|
||||
end)
|
||||
|
||||
print("Telnet server running...")
|
||||
Reference in New Issue
Block a user