Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- t = ""
- -- Commands ----------------------
- --# list: List all files
- --# get: Download file
- --# send: Upload file
- --# delete: Delete file
- --# mkdir: Make Directory
- --# copy: Copy file with new name
- --# stop: Stop server
- --# ping: Ping server
- ----------------------------------
- -- Set username and pass here ----
- user = "local"
- pass = "admin"
- ----------------------------------
- -- Permissions -------------------
- perms = {
- -- if true, user & pass will be needed.
- -- if false, user & pass won't be needed.
- list = false,
- get = false,
- send = true,
- delete = true,
- mkdir = true,
- copy = true,
- move = true,
- rename = true,
- stop = true,
- ping = false
- }
- ----------------------------------
- if not fs.exists("server") then
- fs.makeDir("server")
- else
- if not fs.isDir("server") then
- fs.copy("server","server2")
- fs.delete("server")
- fs.makeDir("server")
- end
- end
- log = fs.open("servlog","w")
- ver = "1.1.2"
- function printt(t)
- ts = os.time()
- time = "["..textutils.formatTime(ts).."] "
- print(time..t)
- log.write(t.."\n")
- end
- term.clear()
- term.setCursorPos(1,1)
- print("File Server Console")
- printt("Server version: "..ver)
- printt("Lua version: ".._VERSION)
- printt(_HOST)
- print("Please type modem side:")
- modem = read()
- rednet.open(modem)
- printt("Started!")
- while true do
- s,m,p = rednet.receive()
- printt("Message received")
- if type(m)=="table" then
- if m[1]=="fserver" then
- if m[2]=="list" then
- if m[3]==user and m[4]==pass or not perms.list then
- printt("Sending file list to computer id "..s)
- sleep(.1)
- rednet.send(s,fs.list("/server"))
- sleep(.1)
- rednet.send(s,"true")
- else
- printt("Cancelled list request")
- sleep(0.1)
- rednet.send(s,"Invalid user or pass")
- end
- elseif m[2]=="delete" then
- printt("Delete requested from computer id "..s)
- if m[4]==user and m[5]==pass or not perms.delete then
- printt("[Deletion] Login completed by computer id "..s)
- fs.delete("/server/"..m[3])
- printt("Deleted "..m[3].." to computer id "..s.."'s request")
- rednet.send(s,"true")
- else
- printt("Cancelled delete request from computer id "..s)
- sleep(.1)
- rednet.send(s,"Invalid user or pass")
- end
- elseif m[2]=="get" then
- printt("File download requested from computer id "..s)
- if m[4]==user and m[5]==pass or not perms.get then
- printt("[Download] Login completed by computer id "..s)
- file = fs.open("server/"..m[3],"r")
- sleep(.1)
- rednet.send(s,file.readAll())
- file.close()
- printt("Sent code of file: "..m[3].." to computer id "..s)
- sleep(.1)
- rednet.send(s,"true")
- else
- printt("Cancelled download request")
- sleep(.1)
- rednet.send(s,"Invalid user or pass")
- end
- elseif m[2]=="send" then
- printt("File upload requested from computer id "..s)
- if m[5]==user and m[6]==pass or not perms.send then
- printt("[Upload] Login completed by computer id "..s)
- file = fs.open("server/"..m[3],"w")
- file.write(m[4])
- file.close()
- printt("File uploaded: '"..m[3].."'")
- rednet.send(s,"true")
- else
- printt("Cancelled file upload")
- sleep(.1)
- rednet.send(s,"Invalid user or pass")
- end
- elseif m[2]=="mkdir" then
- printt("Directory creation requested from computer id "..s)
- if m[4]==user and m[5]==pass or not perms.mkdir then
- printt("[MakeDir] Login completed by computer id "..s)
- fs.makeDir("/server/"..m[3])
- printt("Made directory '"..m[3].."'")
- rednet.send(s,"true")
- else
- printt("Cancelled folder creation request")
- sleep(.1)
- rednet.send(s,"Invalid user or pass")
- end
- elseif m[2]=="copy" then
- printt("File duplication requested from computer id "..s)
- if m[5]==user and m[6]==pass or not perms.copy then
- printt("[Copy] Login completed by computer id "..s)
- fs.copy("server/"..m[3],"server/"..m[4])
- printt("Copied '"..m[3].."' to '"..m[4]"'")
- rednet.send(s,"true")
- else
- printt("Cancelled copy request")
- sleep(.1)
- rednet.send(s,"Invalid user or pass")
- end
- elseif m[2]=="stop" then
- printt("Requested to stop server by computer id "..s)
- if m[3]==user and m[4]==pass or not perms.stop then
- printt("Stopped!")
- sleep(.1)
- rednet.send(s,"true")
- break
- else
- printt("Cancelled stop request")
- sleep(.1)
- rednet.send(s,"Invalid user or pass")
- end
- elseif m[2]=="ping" then
- printt("Ping requested from computer id "..s)
- if m[3]==user and m[4]==pass or not perms.ping then
- printt("Pinging computer id "..s)
- sleep(.1)
- rednet.send(s,"Success")
- else
- printt("Cancelled ping request")
- sleep(.1)
- rednet.send(s,"Invalid user or pass")
- end
- elseif m[2]=="rename" then
- printt("Rename requested from computer id "..s)
- if m[5]==user and m[6]==pass or not perms.rename then
- printt("Renaming "..m[3].." to "..m[4])
- fs.copy("server/"..m[3],"server/"..m[4])
- fs.delete("server/"..m[3])
- sleep(.1)
- rednet.send(s,"true")
- else
- printt("Cancelled rename request")
- sleep(.1)
- rednet.send(s,"Invalid user or pass")
- end
- elseif m[2]=="move" then
- printt("File move requested")
- if m[5]==user and m[6]==pass or not perms.move then
- printt("Moved "..m[3].." to "..m[4])
- fs.copy("server/"..m[3],"server/"..m[4])
- fs.delete("server/"..m[3])
- sleep(.1)
- rednet.send(s,"true")
- else
- printt("Move request failed")
- sleep(.1)
- rednet.send(s,"Invalid user or pass")
- end
- end
- end
- end
- end
- log.close()
- os.shutdown()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement