Advertisement
Guest User

fserv

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