Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local side = "top"
- function split(str, pattern)
- local t = { }
- local fpat = "(.-)" .. pattern
- local last_end = 1
- local s, e, cap = str:find(fpat, 1)
- while s do
- if s ~= 1 or cap ~= "" then
- table.insert(t,cap)
- end
- last_end = e+1
- s, e, cap = str:find(fpat, last_end)
- end
- if last_end <= #str then
- cap = str:sub(last_end)
- table.insert(t, cap)
- end
- return t
- end
- rednet.open(side)
- print("fileserv made by Egor305")
- while true do
- local sender,msg=rednet.receive()
- data = split(msg,"~!SP!~")
- if data[1] == "$send" and data[2] and data[3] then
- if not fs.exists("/data/~"..sender) or not fs.isDir("/data/~"..sender) then
- fs.makeDir("/data/~"..sender)
- end
- fh=fs.open("/data/~"..sender.."/"..data[2],"w")
- if fh then
- fh.write(data[3])
- fh.close()
- rednet.send(sender,"All, ok!")
- print(sender..": "..data[1].." "..data[2].." "..data[3])
- end
- end
- if data[1] == "$get" and data[2] and data[3] then
- if not fs.exists("/data/~"..data[2].."/"..data[3]) or (data[3]:sub(1,1) == "!" and data[2]~=tostring(sender)) then
- rednet.send(sender,"")
- else
- fh = fs.open("/data/~"..data[2].."/"..data[3],"r")
- if fh then
- rednet.send(sender,fh.readAll())
- fh.close()
- print(sender..": "..data[1].." "..data[2].." "..data[3])
- end
- end
- end
- if data[1] == "$dir" then
- if not fs.exists("/data/~"..sender) or not fs.isDir("/data/~"..sender) then
- fs.makeDir("/data/~"..sender)
- end
- rednet.send(sender,textutils.serialize(fs.list("/data/~"..sender)))
- print(sender..": "..data[1])
- end
- if data[1] == "$del" then
- if fs.exists("/data/~"..sender.."/"..data[2]) then
- fs.delete("/data/~"..sender.."/"..data[2])
- rednet.send(sender,"All, ok!")
- print(sender..": "..data[1].." "..data[2])
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment