Advertisement
Guest User

fserv

a guest
Feb 23rd, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.20 KB | None | 0 0
  1. -- Commands ----------------------
  2. --# list: List all files
  3. --# get: Download file
  4. --# send: Upload file
  5. --# delete: Delete file
  6. --# mkdir: Make Directory
  7. --# copy: Copy file with new name
  8. --# stop: Stop server
  9. --# ping: Ping server
  10. ----------------------------------
  11. -- Set username and pass here ----
  12.   user = "local"
  13.   pass = "admin"
  14. ----------------------------------
  15. -- Permissions -------------------
  16. perms = {
  17. -- if true, user & pass will be needed.
  18. -- if false, user & pass won't be needed.
  19.   list = false,
  20.   get = true,
  21.   send = true,
  22.   delete = true,
  23.   mkdir = true,
  24.   copy = true,
  25.   move = true,
  26.   rename = true,
  27.   stop = true,
  28.   ping = false
  29. }
  30. ----------------------------------
  31. if not fs.exists("server") then
  32.   fs.makeDir("server")
  33. else
  34.   if not fs.isDir("server") then
  35.     fs.copy("server","server2")
  36.     fs.delete("server")
  37.     fs.makeDir("server")
  38.   end
  39. end
  40. log = fs.open("servlog","w")
  41. ver = 1.1
  42. function printt(t)
  43.   ts = os.time()
  44.   time = "["..textutils.formatTime(ts).."] "
  45.   print(time..t)
  46.   log.write(t.."\n")
  47. end
  48. term.clear()
  49. term.setCursorPos(1,1)
  50. print("File Server Console")
  51. printt("Server version: "..ver)
  52. printt("Lua version: ".._VERSION)
  53. printt(_HOST)
  54. print("Please type modem side:")
  55. modem = read()
  56. rednet.open(modem)
  57. printt("Started!")
  58. while true do
  59.   s,m,p = rednet.receive()
  60.   printt("Message received")
  61.   if type(m)=="table" then
  62.     if m[1]=="fserver" then
  63.       if m[2]=="list" then
  64.         if m[3]==user and m[4]==pass or not perms.list then
  65.           printt("Sending file list to computer id "..s)
  66.           sleep(.1)
  67.           rednet.send(s,fs.list("/server"))
  68.           sleep(.1)
  69.           rednet.send(s,"true")
  70.         else
  71.           printt("Cancelled list request")
  72.           sleep(0.1)
  73.           rednet.send(s,"Invalid user or pass")
  74.         end
  75.       elseif m[2]=="delete" then
  76.         printt("Delete requested from computer id "..s)
  77.         if m[4]==user and m[5]==pass or not perms.delete then
  78.           printt("[Deletion] Login completed by computer id "..s)
  79.           fs.delete("/server/"..m[3])
  80.           printt("Deleted "..m[3].." to computer id "..s.."'s request")
  81.           rednet.send(s,"true")
  82.         else
  83.           printt("Cancelled delete request from computer id "..s)
  84.           sleep(.1)
  85.           rednet.send(s,"Invalid user or pass")
  86.         end
  87.       elseif m[2]=="get" then
  88.         printt("File download requested from computer id "..s)
  89.         if m[4]==user and m[5]==pass or not perms.get then
  90.           printt("[Download] Login completed by computer id "..s)
  91.           file = fs.open("server/"..m[3],"r")
  92.           sleep(.1)
  93.           rednet.send(s,file.readAll())
  94.           file.close()
  95.           printt("Sent code of file: "..m[3].." to computer id "..s)
  96.           sleep(.1)
  97.           rednet.send(s,"true")
  98.         else
  99.           printt("Cancelled download request")
  100.           sleep(.1)
  101.           rednet.send(s,"Invalid user or pass")
  102.         end
  103.       elseif m[2]=="send" then
  104.         printt("File upload requested from computer id "..s)
  105.         if m[5]==user and m[6]==pass or not perms.send then
  106.           printt("[Upload] Login completed by computer id "..s)
  107.           file = fs.open("server/"..m[3],"w")
  108.           file.write(m[4])
  109.           file.close()
  110.           printt("File uploaded: '"..m[5].."'")
  111.           rednet.send(s,"true")
  112.         else
  113.           printt("Cancelled file upload")
  114.           sleep(.1)
  115.           rednet.send(s,"Invalid user or pass")
  116.         end
  117.       elseif m[2]=="mkdir" then
  118.         printt("Directory creation requested from computer id "..s)
  119.         if m[4]==user and m[5]==pass or not perms.mkdir then
  120.           printt("[MakeDir] Login completed by computer id "..s)
  121.           fs.makeDir("/server/"..m[3])
  122.           printt("Made directory '"..m[3].."'")
  123.           rednet.send(s,"true")
  124.         else
  125.           printt("Cancelled folder creation request")
  126.           sleep(.1)
  127.           rednet.send(s,"Invalid user or pass")
  128.         end
  129.       elseif m[2]=="copy" then
  130.         printt("File duplication requested from computer id "..s)
  131.         if m[5]==user and m[6]==pass or not perms.copy then
  132.           printt("[Copy] Login completed by computer id "..s)
  133.           fs.copy(m[3],m[4])
  134.           printt("Copied '"..m[3].."' to '"..m[4]"'")
  135.           rednet.send(s,"true")
  136.         else
  137.           printt("Cancelled copy request")
  138.           sleep(.1)
  139.           rednet.send(s,"Invalid user or pass")
  140.         end
  141.       elseif m[2]=="stop" then
  142.         printt("Requested to stop server by computer id "..s)
  143.         if m[3]==user and m[4]==pass or not perms.stop then
  144.           printt("Stopped!")
  145.           sleep(.1)
  146.           rednet.send(s,"true")
  147.           break
  148.         else
  149.           printt("Cancelled stop request")
  150.           sleep(.1)
  151.           rednet.send(s,"Invalid user or pass")
  152.         end
  153.       elseif m[2]=="ping" then
  154.         printt("Ping requested from computer id "..s)
  155.         if m[3]==user and m[4]==pass or not perms.ping then
  156.           printt("Pinging computer id "..s)
  157.           sleep(.1)
  158.           rednet.send(s,"Success")
  159.         else
  160.           printt("Cancelled ping request")
  161.           sleep(.1)
  162.           rednet.send(s,"Invalid user or pass")
  163.         end
  164.       elseif m[2]=="rename" then
  165.         printt("Rename requested from computer id "..s)
  166.         if m[5]==user and m[6]==pass or not perms.rename then
  167.           printt("Renaming "..m[3].." to "..m[4])
  168.           fs.copy("server/"..m[3],"server/"..m[4])
  169.           fs.delete("server/"..m[3])
  170.           sleep(.1)
  171.           rednet.send(s,"true")
  172.         else
  173.           printt("Cancelled rename request")
  174.           sleep(.1)
  175.           rednet.send(s,"Invalid user or pass")
  176.         end
  177.       elseif m[2]=="move" then
  178.         printt("File move requested")
  179.         if m[5]==user and m[6]==pass or not perms.move then
  180.           printt("Moved "..m[3].." to "..m[4])
  181.           fs.copy("server/"..m[3],"server/"..m[4])
  182.           fs.delete("server/"..m[3])
  183.           sleep(.1)
  184.           rednet.send(s,"true")
  185.         else
  186.           printt("Move request failed")
  187.           sleep(.1)
  188.           rednet.send(s,"Invalid user or pass")
  189.         end
  190.       end
  191.     end
  192.   end
  193. end
  194. log.close()
  195. os.shutdown()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement