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 = "admin"
- pass = "MaKaka"
- ----------------------------------
- -- Permissions -------------------
- perms = {
- -- if true, user & pass will be needed.
- -- if false, user & pass won't be needed.
- list = false,
- get = true,
- 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.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")
- print("Server version: "..ver)
- print("Lua version: ".._VERSION)
- print("Server id: "..os.getComputerID())
- print(_HOST)
- print("Please type modem side:")
- modem = read()
- rednet.open(modem)
- printt("Started!")
- action = {
- list = function(s,dir,user,passw)
- if passw==pass and usern==user or not perms.list then
- printt("Sending List")
- list = fs.list("server/"..dir)
- file = {}
- dir = {}
- for i = 1,#list do
- if fs.isDir("server/"..list[i]) then
- table.insert(dir,list[i])
- else
- table.insert(file,list[i])
- end
- end
- sleep(0.1)
- rednet.send(s,{file,dir})
- sleep(0.1)
- rednet.send(s,"true")
- else
- printt("List failed: Invalid user and/or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end,
- delete = function(s,file,usern,passw)
- if usern==user and passw==pass or not perms.delete then
- printt("Deleting "..file)
- fs.delete("server/"..file)
- sleep(0.1)
- rednet.send(s,"true")
- else
- printt("Delete failed: Invalid user or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end,
- get = function(s,file,usern,passw)
- if usern==user and passw==pass or not perms.get then
- file = fs.open("server/"..file,"r")
- sleep(0.1)
- rednet.send(s,file.readAll())
- file.close()
- sleep(0.1)
- rednet.send(s,"true")
- else
- printt("Download failed: Invalid user or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end,
- send = function(s,file,code,usern,passw)
- if usern==user and passw==pass or not perms.send then
- f = fs.open("server/"..file,"w")
- f.write(code)
- f.close()
- printt("File uploaded: "..file)
- rednet.send(s,"true")
- else
- printt("File upload failed: Invalid user or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end,
- mkdir = function(s,name,usern,passw)
- if usern==user and passw==pass or not perms.mkdir then
- printt("Making directory: "..name)
- fs.makeDir("server/"..name)
- sleep(0.1)
- rednet.send(s,"true")
- else
- printt("Directory creation failed: Invalid user or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end,
- copy = function(s,file,name,usern,passw)
- if usern==user and passw==pass or not perms.copy then
- printt("Copying file "..file.." to "..name)
- fs.copy("server/"..file,"server/"..name)
- sleep(0.1)
- rednet.send(s,"true")
- else
- printt("File copy failed: Invalid user or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end,
- stop = function(s,usern,passw)
- if usern==user and passw==pass or not perms.stop then
- printt("Stopped!")
- sleep(0.1)
- rednet.send(s,"true")
- log.close()
- os.shutdown()
- else
- printt("Stop failed: Invalid user or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end,
- ping = function(s,usern,passw)
- if usern==user and passw==pass or not perms.ping then
- printt("Pinging computer"..s)
- sleep(0.1)
- rednet.send(s,"true")
- else
- printt("Ping failed: Invalid user or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end,
- rename = function(s,file,name,usern,passw)
- if usern==user and passw==pass or not perms.rename then
- printt("Renaming "..file.." to "..name)
- fs.copy("server/"..file,"server/"..name)
- fs.delete("server/"..file)
- sleep(.1)
- rednet.send(s,"true")
- else
- printt("Rename failed: Invalid user or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end,
- move = function(s,file,dir,usern,passw)
- if usern==user and passw==pass or not perms.move then
- printt("Moving "..file.." to "..dir)
- fs.move("server/"..file,"server/"..dir)
- sleep(0.1)
- rednet.send(s,"true")
- else
- printt("Move failed: Invalid user or pass")
- sleep(0.1)
- rednet.send(s,"Failed")
- end
- end
- }
- while true do
- s,m,p = rednet.receive()
- printt("Message received")
- if type(m)=="table" and m[1]=="fserver" then
- if m[2]=="list" then
- action.list(s,m[3],m[4],m[5])
- elseif m[2]=="delete" then
- action.delete(s,m[3],m[4],m[5])
- elseif m[2]=="get" then
- action.get(s,m[3],m[4],m[5])
- elseif m[2]=="send" then
- action.send(s,m[3],m[6],m[4],m[5])
- elseif m[2]=="mkdir" then
- action.mkdir(s,m[3],m[4],m[5])
- elseif m[2]=="copy" then
- action.copy(s,m[3],m[4],m[5],m[6])
- elseif m[2]=="stop" then
- action.stop(s,m[3],m[4])
- elseif m[2]=="ping" then
- action.ping(s,m[3],m[4])
- elseif m[2]=="rename" then
- action.rename(s,m[3],m[4],m[5],m[6])
- elseif m[2]=="move" then
- action.move(s,m[3],m[4],m[5],m[6])
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement