Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI("gui")
- local devKey = "d41e29e338fb61ac6cfcbbcca3160904"
- local postUrl = "http://pastebin.com/api/api_post.php"
- local loginUrl = "http://pastebin.com/api/api_login.php"
- local errorApi = {"Bad API request, invalid login", "Bad API request, account not active", "Bad API request, invalid api_option",
- "Bad API request, invalid api_dev_key",
- "Bad API request, IP blocked",
- "Bad API request, maximum number of 25 unlisted pastes for your free account",
- "Bad API request, maximum number of 10 private pastes for your free account",
- "Bad API request, api_paste_code was empty",
- "Bad API request, maximum paste file size exceeded",
- "Bad API request, invalid api_expire_date",
- "Bad API request, invalid api_paste_private",
- "Bad API request, invalid api_paste_format"}
- local filesRewrite = {}
- local function choose()
- gui.setButton(1, 5, "Save on disk")
- gui.setButton(16, 5, "Save on computer")
- gui.setButton(35, 5, "Save on cloud")
- gui.render()
- local selection = gui.getSelection()
- if selection == 1 then
- input = "disk"
- elseif selection == 2 then
- input = "computer"
- elseif selection == 3 then
- input = "cloud"
- else
- print("Error : choose : wrong selection value")
- end
- gui.clearBuffer()
- term.clear()
- if input == "computer" then
- saveToComputer()
- elseif input == "disk" then
- saveToDisk()
- elseif input == "cloud" then
- saveToCloud()
- else
- print("Bad response")
- end
- end
- local function chooseFile()
- gui.setButton(5, 7, "Backup one file")
- gui.setButtont(18, 7, "Backup the whole computer")
- gui.render()
- local selection = gui.getSelection()
- if selection == 1 then
- return "one file"
- elseif selection == 2 then
- return "whole computer"
- else
- print("Error : chooseFile : wrong selection value")
- return "false"
- end
- end
- local function saveToComputer()
- if not fs.exists("/backupFolder") then
- fs.makeDir("/backupFolder")
- end
- if chooseFile() == "one file" then
- write("File to backup :")
- local fileToBack = io.read()
- term.clear()
- if fs.exists(fileToBack) then
- local fileO = fs.open(fileToBack, "r")
- local dataF = fileO.readAll()
- fileO.close()
- if fileToBack:find("/") then
- local fileToBackR = fileToBack:reverse()
- local fileNameR = fileToBackR:find("%a+/")
- local fileName = fileNameR:reverse()
- local fileBack = fs.open("/backupFolder"..fileName, "w")
- fileBack.write(dataF)
- fileBack.close()
- print("File backuped")
- else
- local fileBack = fs.open("/backupFolder/"..fileToBack, "w")
- fileBack.write(dataF)
- fileBack.close()
- print("File backuped")
- end
- else
- print("File not found")
- end
- else
- local filesToBackup = fs.list()
- for x=1, #filesToBackup do
- local fileO = fs.open(filesToBackup[x], "r")
- local dataF = fileO.readAll()
- fileO.close()
- if filesToBackup[x]:find("/") then
- local fileToBackR = filesToBackup[x]:reverse()
- local fileNameR = fileToBackR:find("%a+/")
- local fileName = fileNameR:reverse()
- local fileBack = fs.open("/backupFolder"..fileName, "w")
- fileBack.write(dataF)
- fileBack.close()
- print("File backuped")
- else
- local fileBack = fs.open("/backupFolder/"..filesToBackup[x], "w")
- fileBack.write(dataF)
- fileBack.close()
- print("File backuped")
- end
- end
- end
- end
- local function saveToCloud()
- write("Please enter your pastebin username :")
- local user = read()
- term.clear()
- write("Enter your password :")
- local pass = read()
- term.clear()
- print("Logging in...")
- local response = http.post(loginUrl, "api_dev_key="..devKey.."&api_user_name="..user.."&api_user_password="..pass)
- if response == errorApi[1] then
- print("Error : invalid login")
- return errorApi[1]
- elseif response == errorApi[2] then
- print("Error : account not active")
- return errorApi[2]
- elseif response == nil then
- print("Error : can not connect to pastebin")
- return "Can not connect to pastebin"
- else
- local userKey = response
- end
- term.clear()
- print("Logged in succesfully !")
- sleep(1)
- term.clear()
- write("File to backup :")
- local fileToBack = io.read()
- term.clear()
- if fs.exists(fileToBack) then
- local fileO = fs.open(fileToBack, "r")
- local dataF = fileO.readAll()
- fileO.close()
- else
- print("Error : file not found")
- end
- if dataF then
- local response = http.post(postUrl, "api_dev_key="..devKey.."&api_option=paste&api_paste_code="..dataF.."&api_paste_name=backup"..fileToBack.."&api_user_key="..userKey.."&api_paste_format=lua")
- if response == errorApi[9] then
- print("Error : maximum paste size exceeded")
- elseif response == errorApi[5] then
- print("Error : ip banned")
- else
- print("Your url past is : "..response)
- end
- end
- end
- local function saveToDisk()
- if not fs.exists("/disk/backupFolder") then
- fs.makeDir("/disk/backupFolder")
- end
- if chooseFile() == "one file" then
- write("File to backup :")
- local fileToBack = io.read()
- term.clear()
- if fs.exists(fileToBack) then
- local fileO = fs.open(fileToBack, "r")
- local dataF = fileO.readAll()
- fileO.close()
- if fileToBack:find("/") then
- local fileToBackR = fileToBack:reverse()
- local fileNameR = fileToBackR:find("%a+/")
- local fileName = fileNameR:reverse()
- local fileBack = fs.open("/disk/backupFolder"..fileName, "w")
- fileBack.write(dataF)
- fileBack.close()
- print("File backuped")
- else
- local fileBack = fs.open("/disk/backupFolder/"..fileToBack, "w")
- fileBack.write(dataF)
- fileBack.close()
- print("File backuped")
- end
- else
- print("File not found")
- end
- else
- local filesToBackup = fs.list()
- for x=1, #filesToBackup do
- local fileO = fs.open(filesToBackup[x], "r")
- local dataF = fileO.readAll()
- fileO.close()
- if filesToBackup[x]:find("/") then
- local fileToBackR = filesToBackup[x]:reverse()
- local fileNameR = fileToBackR:find("%a+/")
- local fileName = fileNameR:reverse()
- local fileBack = fs.open("/disk/backupFolder"..fileName, "w")
- fileBack.write(dataF)
- fileBack.close()
- print("File backuped")
- else
- local fileBack = fs.open("/disk/backupFolder/"..filesToBackup[x], "w")
- fileBack.write(dataF)
- fileBack.close()
- print("File backuped")
- end
- end
- end
- end
- local function restoreDisk()
- if fs.exists("/disk/backupFolder") then
- local filesRestore = fs.list("/disk/backupFolder")
- for x=1, #filesRestore do
- local filesR = fs.open("/disk/backupFolder/"..filesRestore[x], "r")
- local dataF = filesR.readAll()
- filesR.close()
- table.insert(filesRewrite, filesRestore[x])
- table.insert(filesRewrite, dataF)
- end
- writeBackup()
- else
- print("Error : disk restore : the backup folder doesn't exist on the disk")
- end
- end
- local function writeBackup()
- for x=1, #filesRewrite/2, 2 do
- local fileW = fs.open(filesRewrite[x], "w")
- fileW.write(filesRewrite[x+1])
- fileW.close()
- end
- end
- local x = "yes"
- while x == "yes" do
- choose()
- print("Save another file ?")
- print("yes|no")
- local resp = string.lower(io.read())
- if resp == "no" then
- break
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment