Advertisement
Guest User

fserv

a guest
Mar 5th, 2016
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.99 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 = 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.     else
  153.         printt("Stop failed: Invalid user or pass")
  154.         sleep(0.1)
  155.         rednet.send(s,"Failed")
  156.     end
  157.   end,
  158.   ping = function(s,usern,passw)
  159.     if usern==user and passw==pass or not perms.ping then
  160.         printt("Pinging computer"..s)
  161.         sleep(0.1)
  162.         rednet.send(s,"true")
  163.     else
  164.         printt("Ping failed: Invalid user or pass")
  165.         sleep(0.1)
  166.         rednet.send(s,"Failed")
  167.     end
  168.   end,
  169.   rename = function(s,file,name,usern,passw)
  170.     if usern==user and passw==pass or not perms.rename then
  171.         printt("Renaming "..file.." to "..name)
  172.         fs.copy("server/"..file,"server/"..name)
  173.         fs.delete("server/"..file)
  174.         sleep(.1)
  175.         rednet.send(s,"true")
  176.     else
  177.         printt("Rename failed: Invalid user or pass")
  178.         sleep(0.1)
  179.         rednet.send(s,"Failed")
  180.     end
  181.   end,
  182.   move = function(s,file,dir,usern,passw)
  183.     if usern==user and passw==pass or not perms.move then
  184.         printt("Moving "..file.." to "..dir)
  185.         fs.move("server/"..file,"server/"..dir)
  186.         sleep(0.1)
  187.         rednet.send(s,"true")
  188.     else
  189.         printt("Move failed: Invalid user or pass")
  190.         sleep(0.1)
  191.         rednet.send(s,"Failed")
  192.     end
  193.   end
  194. }
  195. while true do
  196.   s,m,p = rednet.receive()
  197.   printt("Message received")
  198.   if type(m)=="table" and m[1]=="fserver" then
  199.       if m[2]=="list" then
  200.         action.list(s,m[3],m[4],m[5])
  201.       elseif m[2]=="delete" then
  202.         action.delete(s,m[3],m[4],m[5])
  203.       elseif m[2]=="get" then
  204.         action.get(s,m[3],m[4],m[5])
  205.       elseif m[2]=="send" then
  206.         action.send(s,m[3],m[6],m[4],m[5])
  207.       elseif m[2]=="mkdir" then
  208.         action.mkdir(s,m[3],m[4],m[5])
  209.       elseif m[2]=="copy" then
  210.         action.copy(s,m[3],m[4],m[5],m[6])
  211.       elseif m[2]=="stop" then
  212.         action.stop(s,m[3],m[4])
  213.         break
  214.       elseif m[2]=="ping" then
  215.         action.ping(s,m[3],m[4])
  216.       elseif m[2]=="rename" then
  217.         action.rename(s,m[3],m[4],m[5],m[6])
  218.       elseif m[2]=="move" then
  219.         action.move(s,m[3],m[4],m[5],m[6])
  220.       end
  221.   end
  222. end
  223. log.close()
  224. os.shutdown()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement