Add telnet (kinda)

This commit is contained in:
2026-08-08 20:16:59 +03:00
parent ca65d252c9
commit d2ad6be236
+60
View File
@@ -0,0 +1,60 @@
-- Despite the name it's not telnet
local component = require("component")
if not component.isAvailable("internet") then
terminal.write("telnet: this program requires an internet card to run\n")
return
end
local internet = component.internet
if not internet.isTcpEnabled() then
terminal.write("telnet: TCP disabled\n")
return
end
local arg = {...}
local host = arg[1]
local port = tonumber(arg[2])
local sock = internet.connect(host, port)
local connected = false
local err
for _ = 1, 5 do
local ok
ok, err = sock.finishConnect()
if ok then
connected = true
break
end
coroutine.yield()
end
if not connected then
print("telnet: " .. err)
return
end
print(("connected to %s:%d"):format(host, port))
while true do
local fromSocket = sock.read(math.maxinteger or math.huge)
if fromSocket == nil then
print("telnet: connection closed")
sock.close()
return
end
terminal.write(fromSocket)
terminal.flush()
local fromTerminal = terminal.read()
if fromTerminal == "" then
sock.close()
return
end
while fromTerminal ~= "" do
local nbytes, err = sock.write(fromTerminal .. "\r\n")
if err then
print("telnet: " .. err)
return
end
fromTerminal = fromTerminal:sub(nbytes + 1)
end
end