Merge branch 'master' of github.com:XeonSquared/multice
This commit is contained in:
commit
f12080f7b9
@ -5,6 +5,7 @@ library/fs-min.lua
|
|||||||
library/fs-std.lua
|
library/fs-std.lua
|
||||||
library/fs-util.lua
|
library/fs-util.lua
|
||||||
util/fs-automount.lua
|
util/fs-automount.lua
|
||||||
|
util/fs-automount-ext.lua
|
||||||
drivers/tty.lua
|
drivers/tty.lua
|
||||||
drivers/kbd.lua
|
drivers/kbd.lua
|
||||||
util/autogpu.lua
|
util/autogpu.lua
|
||||||
@ -15,10 +16,13 @@ library/base64.lua
|
|||||||
library/chauth.lua
|
library/chauth.lua
|
||||||
library/fs-ext.lua
|
library/fs-ext.lua
|
||||||
library/readline.lua
|
library/readline.lua
|
||||||
|
library/buffer.lua
|
||||||
|
library/io.lua
|
||||||
net/nshd.lua
|
net/nshd.lua
|
||||||
net/nshc.lua
|
net/nshc.lua
|
||||||
net/nshd-auth.lua
|
net/nshd-auth.lua
|
||||||
net/nshc-auth.lua
|
net/nshc-auth.lua
|
||||||
|
net/pxesrv.lua
|
||||||
applications/shutil.lua
|
applications/shutil.lua
|
||||||
applications/skex2.lua
|
applications/skex2.lua
|
||||||
applications/luash.lua
|
applications/luash.lua
|
||||||
|
20
configs/headless-server.cfg
Normal file
20
configs/headless-server.cfg
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
base/header.lua
|
||||||
|
library/print.lua
|
||||||
|
library/net.lua
|
||||||
|
library/readline.lua
|
||||||
|
net/nshd.lua
|
||||||
|
library/crc32.lua
|
||||||
|
library/chauth.lua
|
||||||
|
net/nshd.lua
|
||||||
|
net/nshd-auth.lua
|
||||||
|
applications/luash-login.lua
|
||||||
|
applications/shutil.lua
|
||||||
|
library/fs-min.lua
|
||||||
|
library/fs-std.lua
|
||||||
|
library/fs-ext.lua
|
||||||
|
library/buffer.lua
|
||||||
|
library/io.lua
|
||||||
|
util/fs-automount-min.lua
|
||||||
|
util/fs-automount-ext.lua
|
||||||
|
util/autonsh.lua
|
||||||
|
base/footer.lua
|
18
modules/applications/luash-login.lua
Normal file
18
modules/applications/luash-login.lua
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
function luash(si)
|
||||||
|
s("lua shell",function()
|
||||||
|
local np = ""
|
||||||
|
while np ~= pass do
|
||||||
|
write("Password: ")
|
||||||
|
np=readln("*")
|
||||||
|
end
|
||||||
|
if _OSVERSION and _BD then
|
||||||
|
write(_OSVERSION.." on "..nID.." (built at ".._BD..")\t")
|
||||||
|
end
|
||||||
|
print(tostring(computer.freeMemory()/1024).."K free.",_G.motd)
|
||||||
|
print(_VERSION)
|
||||||
|
while true do
|
||||||
|
write("> ")
|
||||||
|
print(pcall(load(readln())))
|
||||||
|
end
|
||||||
|
end,si)
|
||||||
|
end
|
@ -1,6 +1,6 @@
|
|||||||
fT = {}
|
fT = {}
|
||||||
function fres(p)
|
function fres(p)
|
||||||
local F = (p:match("(%a-):") or p:match("/?(%a-)/"))
|
local F = (p:match("(.-):") or p:match("/?(.-)/"))
|
||||||
local P = (p:match("%a-:(.+)") or p:match("/?%a-/(.+)"))
|
local P = (p:match(".-:(.+)") or p:match("/?.-/(.+)"))
|
||||||
if fT[F] ~= nil then return fT[F],P else return false end
|
if fT[F] ~= nil then return fT[F],P else return false end
|
||||||
end
|
end
|
||||||
|
59
modules/net/pxesrv.lua
Normal file
59
modules/net/pxesrv.lua
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
function pxesrv(i,P,LF) -- port, image, log file
|
||||||
|
_G.pxcl = {}
|
||||||
|
local P,i,LF = P or 9671,i or "boot:/pxeimage.lua",LF or "boot:/pxetab.csv"
|
||||||
|
for k,v in ipairs(tM) do v.open(P) end
|
||||||
|
print("[netboot] loading data")
|
||||||
|
f=io.open(i)
|
||||||
|
if f then d=f:read("*a") f:close()
|
||||||
|
else error("image not found")
|
||||||
|
end
|
||||||
|
print("[netboot] server starting, port "..TS(P)..", image file "..i)
|
||||||
|
print("[netboot] loading existing data")
|
||||||
|
local f=io.open(LF)
|
||||||
|
C.yield()
|
||||||
|
if f then
|
||||||
|
local c = f:read("*a")
|
||||||
|
f:close()
|
||||||
|
for m,C,h,p in c:gmatch("(.-),(.-),(.-),(.-)\n") do
|
||||||
|
print(m.." = {"..C..", "..h..", "..p.."}")
|
||||||
|
pxcl[m]={C,h,p}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
s("pxesrv",function() print(pcall(function()
|
||||||
|
while true do
|
||||||
|
if ev[1] == "modem_message" and ev[4] == P then
|
||||||
|
print("[netboot] request from "..ev[3]:sub(1,8)..":"..TS(ev[6]):sub(1,8))
|
||||||
|
if type(pxcl[ev[3]]) ~= "table" then
|
||||||
|
pxcl[ev[3]]={ev[6],ev[6]:sub(1,8),"pass"}
|
||||||
|
else
|
||||||
|
pxcl[ev[3]]={ev[6],pxcl[ev[3]][2] or ev[6]:sub(1,8),pxcl[ev[3]][3] or "pass"}
|
||||||
|
end
|
||||||
|
fd=d:gsub("HOSTNAME",pxcl[ev[3]][2])
|
||||||
|
fd=fd:gsub("PASSWORD",pxcl[ev[3]][3])
|
||||||
|
local la,fr = ev[2],ev[3]
|
||||||
|
print(fd:len())
|
||||||
|
for i = 1, fd:len(), 2048 do
|
||||||
|
component.invoke(la,"send",fr,P,fd:sub(i,i+2047))
|
||||||
|
C.yield()
|
||||||
|
end
|
||||||
|
component.invoke(la,"send",fr,P,".")
|
||||||
|
end
|
||||||
|
C.yield()
|
||||||
|
end
|
||||||
|
end)) end)
|
||||||
|
s("pxesrv logger",function() print(pcall(function()
|
||||||
|
while true do
|
||||||
|
for i = 1, 100 do
|
||||||
|
C.yield()
|
||||||
|
end
|
||||||
|
f=fopen(LF,"w")
|
||||||
|
if f then
|
||||||
|
for k,v in pairs(pxcl) do
|
||||||
|
fwrite(f,k..","..v[1]..","..v[2]..","..v[3].."\n")
|
||||||
|
end
|
||||||
|
fclose(f)
|
||||||
|
C.yield()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)) end)
|
||||||
|
end
|
7
modules/util/autoexec.lua
Normal file
7
modules/util/autoexec.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
do
|
||||||
|
local f=io.open("/boot/autoexec.lua")
|
||||||
|
if f then
|
||||||
|
pcall(load(f:read("*a")))
|
||||||
|
f:close()
|
||||||
|
end
|
||||||
|
end
|
3
modules/util/autonsh.lua
Normal file
3
modules/util/autonsh.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
_G.pass = "PASSWORD"
|
||||||
|
nshd("nsh")
|
||||||
|
nshds("nshs",pass)
|
9
modules/util/fs-automount-ext.lua
Normal file
9
modules/util/fs-automount-ext.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
do
|
||||||
|
local C=0
|
||||||
|
for c in component.list("filesystem") do
|
||||||
|
if c ~= fT.boot.address and c ~= fT.tmp.address then
|
||||||
|
fT["fs"..string.format("%02d",C)] = component.proxy(c)
|
||||||
|
C=C+1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
58
util/pixice.lua
Normal file
58
util/pixice.lua
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
--base/loadlin.lua
|
||||||
|
if pcall(require,"computer") then
|
||||||
|
print("OpenOS detected.")
|
||||||
|
print(os.getenv("_"))
|
||||||
|
local computer = require "computer"
|
||||||
|
local process = require "process"
|
||||||
|
os.execute("cp "..os.getenv("_").." /tmp/init.lua")
|
||||||
|
computer.setBootAddress(computer.tmpAddress())
|
||||||
|
computer.shutdown(true)
|
||||||
|
end
|
||||||
|
-- actual code starts here
|
||||||
|
s=""
|
||||||
|
computer.getBootAddress = computer.tmpAddress
|
||||||
|
do
|
||||||
|
local addr=nil
|
||||||
|
local OCPS,OCSD,OCI=computer.pullSignal,computer.shutdown,component.invoke
|
||||||
|
function computer.pullSignal(...)
|
||||||
|
local tA={...}
|
||||||
|
local eV={OCPS(...)}
|
||||||
|
if eV[1] == "modem_message" and eV[3] == addr and eV[4] == 9671 then
|
||||||
|
if eV[6] == "reboot" then
|
||||||
|
OCSD(true)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return table.unpack(eV)
|
||||||
|
end
|
||||||
|
function computer.shutdown()
|
||||||
|
OCSD(true)
|
||||||
|
end
|
||||||
|
function component.invoke(...)
|
||||||
|
tA={...}
|
||||||
|
if tA[2] == "stop" then return end
|
||||||
|
return OCI(...)
|
||||||
|
end
|
||||||
|
local m=component.proxy(component.list("modem")())
|
||||||
|
m.open(9671)
|
||||||
|
if addr then
|
||||||
|
m.send(addr,9671,computer.address())
|
||||||
|
while true do
|
||||||
|
local ev={computer.pullSignal()}
|
||||||
|
if ev[1] == "modem_message" and ev[3] == addr and ev[4] == 9671 then
|
||||||
|
if ev[6] == "." then break end
|
||||||
|
s=s..ev[6]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
m.broadcast(9671,computer.address())
|
||||||
|
while true do
|
||||||
|
local ev={computer.pullSignal()}
|
||||||
|
if ev[1] == "modem_message" and ev[4] == 9671 then
|
||||||
|
if ev[6] == "." then break end
|
||||||
|
s=s..ev[6]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
load(s)()
|
Loading…
Reference in New Issue
Block a user