OC-PsychOS/exec/nbsrv.lua

28 lines
973 B
Lua

local tA = {...}
local nport = tonumber(tA[1])
local fpath = tostring(tA[2])
for m in component.list("modem") do
print("[nbsrv] opening port on "..m)
component.invoke(m,"open",nport)
end
local f=io.open(fpath,"rb")
local nbdata = f:read("*a")
f:close()
spawn("nbsrv: "..tostring(nport)..","..fpath,function() print(xpcall(function()
while true do
local _, laddress, raddress, port, _, payload = event.pull("modem_message")
if port == nport and type(payload) == "string" then
if payload:len() == 36 then
local sraddress,spayload = raddress:sub(1,8),payload:sub(1,8)
print("[nbsrv] request from "..sraddress.."/"..spayload.." on port "..tostring(port))
for i = 1, nbdata:len(), 2048 do
component.invoke(laddress,"send",raddress,port,nbdata:sub(i,i+2047))
end
component.invoke(laddress,"send",raddress,port,".")
print("[nbsrv] served request from "..sraddress.."/"..spayload)
end
end
end
end)) end)
print("[nbsrv] nbsrv started.")