Advertisement
Guest User

fserv

a guest
May 24th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.98 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 = "admin"
  14.   pass = "MaKaka"
  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 = true,
  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.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. print("Server version: "..ver)
  53. print("Lua version: ".._VERSION)
  54. print("Server id: "..os.getComputerID())
  55. print(_HOST)
  56. print("Please type modem side:")
  57. modem = read()
  58. rednet.open(modem)
  59. printt("Started!")
  60. action = {
  61.   list = function(s,dir,user,passw)
  62.     if passw==pass and usern==user or not perms.list then
  63.       printt("Sending List")
  64.       list = fs.list("server/"..dir)
  65.       file = {}
  66.       dir = {}
  67.       for i = 1,#list do
  68.         if fs.isDir("server/"..list[i]) then
  69.           table.insert(dir,list[i])
  70.         else
  71.           table.insert(file,list[i])
  72.         end
  73.       end
  74.       sleep(0.1)
  75.       rednet.send(s,{file,dir})
  76.       sleep(0.1)
  77.       rednet.send(s,"true")
  78.     else
  79.       printt("List failed: Invalid user and/or pass")
  80.       sleep(0.1)
  81.       rednet.send(s,"Failed")
  82.     end
  83.   end,
  84.   delete = function(s,file,usern,passw)
  85.     if usern==user and passw==pass or not perms.delete then
  86.       printt("Deleting "..file)
  87.       fs.delete("server/"..file)
  88.       sleep(0.1)
  89.       rednet.send(s,"true")
  90.     else
  91.       printt("Delete failed: Invalid user or pass")
  92.       sleep(0.1)
  93.       rednet.send(s,"Failed")
  94.     end
  95.   end,
  96.   get = function(s,file,usern,passw)
  97.     if usern==user and passw==pass or not perms.get then
  98.       file = fs.open("server/"..file,"r")
  99.       sleep(0.1)
  100.       rednet.send(s,file.readAll())
  101.       file.close()
  102.       sleep(0.1)
  103.       rednet.send(s,"true")
  104.     else
  105.       printt("Download failed: Invalid user or pass")
  106.       sleep(0.1)
  107.       rednet.send(s,"Failed")
  108.     end
  109.   end,
  110.   send = function(s,file,code,usern,passw)
  111.     if usern==user and passw==pass or not perms.send then
  112.           f = fs.open("server/"..file,"w")
  113.           f.write(code)
  114.           f.close()
  115.           printt("File uploaded: "..file)
  116.           rednet.send(s,"true")
  117.     else
  118.         printt("File upload failed: Invalid user or pass")
  119.         sleep(0.1)
  120.         rednet.send(s,"Failed")
  121.     end
  122.   end,
  123.   mkdir = function(s,name,usern,passw)
  124.     if usern==user and passw==pass or not perms.mkdir then
  125.         printt("Making directory: "..name)
  126.         fs.makeDir("server/"..name)
  127.         sleep(0.1)
  128.         rednet.send(s,"true")
  129.     else
  130.         printt("Directory creation failed: Invalid user or pass")
  131.         sleep(0.1)
  132.         rednet.send(s,"Failed")
  133.     end
  134.   end,
  135.   copy = function(s,file,name,usern,passw)
  136.     if usern==user and passw==pass or not perms.copy then
  137.         printt("Copying file "..file.." to "..name)
  138.         fs.copy("server/"..file,"server/"..name)
  139.         sleep(0.1)
  140.         rednet.send(s,"true")
  141.     else
  142.         printt("File copy failed: Invalid user or pass")
  143.         sleep(0.1)
  144.         rednet.send(s,"Failed")
  145.     end
  146.   end,
  147.   stop = function(s,usern,passw)
  148.     if usern==user and passw==pass or not perms.stop then
  149.         printt("Stopped!")
  150.         sleep(0.1)
  151.         rednet.send(s,"true")
  152.      log.close()
  153.      os.shutdown()
  154.     else
  155.         printt("Stop failed: Invalid user or pass")
  156.         sleep(0.1)
  157.         rednet.send(s,"Failed")
  158.     end
  159.   end,
  160.   ping = function(s,usern,passw)
  161.     if usern==user and passw==pass or not perms.ping then
  162.         printt("Pinging computer"..s)
  163.         sleep(0.1)
  164.         rednet.send(s,"true")
  165.     else
  166.         printt("Ping failed: Invalid user or pass")
  167.         sleep(0.1)
  168.         rednet.send(s,"Failed")
  169.     end
  170.   end,
  171.   rename = function(s,file,name,usern,passw)
  172.     if usern==user and passw==pass or not perms.rename then
  173.         printt("Renaming "..file.." to "..name)
  174.         fs.copy("server/"..file,"server/"..name)
  175.         fs.delete("server/"..file)
  176.         sleep(.1)
  177.         rednet.send(s,"true")
  178.     else
  179.         printt("Rename failed: Invalid user or pass")
  180.         sleep(0.1)
  181.         rednet.send(s,"Failed")
  182.     end
  183.   end,
  184.   move = function(s,file,dir,usern,passw)
  185.     if usern==user and passw==pass or not perms.move then
  186.         printt("Moving "..file.." to "..dir)
  187.         fs.move("server/"..file,"server/"..dir)
  188.         sleep(0.1)
  189.         rednet.send(s,"true")
  190.     else
  191.         printt("Move failed: Invalid user or pass")
  192.         sleep(0.1)
  193.         rednet.send(s,"Failed")
  194.     end
  195.   end
  196. }
  197. while true do
  198.   s,m,p = rednet.receive()
  199.   printt("Message received")
  200.   if type(m)=="table" and m[1]=="fserver" then
  201.       if m[2]=="list" then
  202.         action.list(s,m[3],m[4],m[5])
  203.       elseif m[2]=="delete" then
  204.         action.delete(s,m[3],m[4],m[5])
  205.       elseif m[2]=="get" then
  206.         action.get(s,m[3],m[4],m[5])
  207.       elseif m[2]=="send" then
  208.         action.send(s,m[3],m[6],m[4],m[5])
  209.       elseif m[2]=="mkdir" then
  210.         action.mkdir(s,m[3],m[4],m[5])
  211.       elseif m[2]=="copy" then
  212.         action.copy(s,m[3],m[4],m[5],m[6])
  213.       elseif m[2]=="stop" then
  214.         action.stop(s,m[3],m[4])
  215.       elseif m[2]=="ping" then
  216.         action.ping(s,m[3],m[4])
  217.       elseif m[2]=="rename" then
  218.         action.rename(s,m[3],m[4],m[5],m[6])
  219.       elseif m[2]=="move" then
  220.         action.move(s,m[3],m[4],m[5],m[6])
  221.       end
  222.   end
  223. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement