Bjornir90

Backup

Dec 3rd, 2012
464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.10 KB | None | 0 0
  1. os.loadAPI("gui")
  2. local devKey = "d41e29e338fb61ac6cfcbbcca3160904"
  3.  
  4. local postUrl = "http://pastebin.com/api/api_post.php"
  5.  
  6. local loginUrl = "http://pastebin.com/api/api_login.php"
  7.  
  8. local errorApi = {"Bad API request, invalid login", "Bad API request, account not active", "Bad API request, invalid api_option",
  9. "Bad API request, invalid api_dev_key",
  10. "Bad API request, IP blocked",
  11. "Bad API request, maximum number of 25 unlisted pastes for your free account",
  12. "Bad API request, maximum number of 10 private pastes for your free account",
  13. "Bad API request, api_paste_code was empty",
  14. "Bad API request, maximum paste file size exceeded",
  15. "Bad API request, invalid api_expire_date",
  16. "Bad API request, invalid api_paste_private",
  17. "Bad API request, invalid api_paste_format"}
  18.  
  19. local filesRewrite = {}
  20.  
  21. local function choose()
  22.  gui.setButton(1, 5, "Save on disk")
  23.  gui.setButton(16, 5, "Save on computer")
  24.  gui.setButton(35, 5, "Save on cloud")
  25.  gui.render()
  26.  local selection = gui.getSelection()
  27.  if selection == 1 then
  28.   input = "disk"
  29.  elseif selection == 2 then
  30.   input = "computer"
  31.  elseif selection == 3 then
  32.   input = "cloud"
  33.  else
  34.   print("Error : choose : wrong selection value")
  35.  end
  36.  gui.clearBuffer()
  37. term.clear()
  38. if input == "computer" then
  39.  saveToComputer()
  40. elseif input == "disk" then
  41.  saveToDisk()
  42. elseif input == "cloud" then
  43.  saveToCloud()
  44. else
  45.  print("Bad response")
  46.  end
  47. end
  48.  
  49. local function chooseFile()
  50. gui.setButton(5, 7, "Backup one file")
  51.  gui.setButtont(18, 7, "Backup the whole computer")
  52.  gui.render()
  53.  local selection = gui.getSelection()
  54.  if selection == 1 then
  55.   return "one file"
  56.  elseif selection == 2 then
  57.   return "whole computer"
  58.  else
  59.   print("Error : chooseFile : wrong selection value")
  60.   return "false"
  61.  end
  62. end
  63.  
  64. local function saveToComputer()
  65.  if not fs.exists("/backupFolder") then
  66.   fs.makeDir("/backupFolder")
  67.  end
  68.  if chooseFile() == "one file" then
  69.  write("File to backup :")
  70.  local fileToBack = io.read()
  71.  term.clear()
  72.  if fs.exists(fileToBack) then
  73.   local fileO = fs.open(fileToBack, "r")
  74.   local dataF = fileO.readAll()
  75.   fileO.close()
  76.   if fileToBack:find("/") then
  77.   local fileToBackR = fileToBack:reverse()
  78.   local fileNameR = fileToBackR:find("%a+/")
  79.   local fileName = fileNameR:reverse()
  80.   local fileBack = fs.open("/backupFolder"..fileName, "w")
  81.   fileBack.write(dataF)
  82.   fileBack.close()
  83.   print("File backuped")
  84.  else
  85.    local fileBack = fs.open("/backupFolder/"..fileToBack, "w")
  86.   fileBack.write(dataF)
  87.   fileBack.close()
  88.   print("File backuped")
  89.  end
  90.  else
  91.   print("File not found")
  92.  end
  93.  else
  94.   local filesToBackup = fs.list()
  95.   for x=1, #filesToBackup do
  96.     local fileO = fs.open(filesToBackup[x], "r")
  97.   local dataF = fileO.readAll()
  98.   fileO.close()
  99.   if filesToBackup[x]:find("/") then
  100.   local fileToBackR = filesToBackup[x]:reverse()
  101.   local fileNameR = fileToBackR:find("%a+/")
  102.   local fileName = fileNameR:reverse()
  103.   local fileBack = fs.open("/backupFolder"..fileName, "w")
  104.   fileBack.write(dataF)
  105.   fileBack.close()
  106.   print("File backuped")
  107.  else
  108.    local fileBack = fs.open("/backupFolder/"..filesToBackup[x], "w")
  109.   fileBack.write(dataF)
  110.   fileBack.close()
  111.   print("File backuped")
  112.  end
  113.  end
  114.  end
  115. end
  116.  
  117. local function saveToCloud()
  118.  write("Please enter your pastebin username :")
  119.  local user = read()
  120.  term.clear()
  121.  write("Enter your password :")
  122.  local pass = read()
  123.  term.clear()
  124.  print("Logging in...")
  125.  local response = http.post(loginUrl, "api_dev_key="..devKey.."&api_user_name="..user.."&api_user_password="..pass)
  126.  if response == errorApi[1] then
  127.   print("Error : invalid login")
  128.   return errorApi[1]
  129.  elseif response == errorApi[2] then
  130.   print("Error : account not active")
  131.   return errorApi[2]
  132.  elseif response == nil then
  133.   print("Error : can not connect to pastebin")
  134.   return "Can not connect to pastebin"
  135.  else
  136.   local userKey = response
  137.  end
  138.  term.clear()
  139.  print("Logged in succesfully !")
  140.  sleep(1)
  141.  term.clear()
  142.  write("File to backup :")
  143.  local fileToBack = io.read()
  144.  term.clear()
  145.  if fs.exists(fileToBack) then
  146.   local fileO = fs.open(fileToBack, "r")
  147.   local dataF = fileO.readAll()
  148.   fileO.close()
  149.  else
  150.   print("Error : file not found")
  151.  end
  152.  if dataF then
  153.   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")
  154.  if response == errorApi[9] then
  155.   print("Error : maximum paste size exceeded")
  156.  elseif response == errorApi[5] then
  157.   print("Error : ip banned")
  158.  else
  159.   print("Your url past is : "..response)
  160.  end
  161. end
  162. end
  163.  
  164. local function saveToDisk()
  165.  if not fs.exists("/disk/backupFolder") then
  166.   fs.makeDir("/disk/backupFolder")
  167.  end
  168.  if chooseFile() == "one file" then
  169.  write("File to backup :")
  170.  local fileToBack = io.read()
  171.  term.clear()
  172.  if fs.exists(fileToBack) then
  173.   local fileO = fs.open(fileToBack, "r")
  174.   local dataF = fileO.readAll()
  175.   fileO.close()
  176.   if fileToBack:find("/") then
  177.   local fileToBackR = fileToBack:reverse()
  178.   local fileNameR = fileToBackR:find("%a+/")
  179.   local fileName = fileNameR:reverse()
  180.   local fileBack = fs.open("/disk/backupFolder"..fileName, "w")
  181.   fileBack.write(dataF)
  182.   fileBack.close()
  183.   print("File backuped")
  184.  else
  185.   local fileBack = fs.open("/disk/backupFolder/"..fileToBack, "w")
  186.   fileBack.write(dataF)
  187.   fileBack.close()
  188.   print("File backuped")
  189.  end
  190.  else
  191.   print("File not found")
  192.  end
  193.  else
  194.   local filesToBackup = fs.list()
  195.   for x=1, #filesToBackup do
  196.     local fileO = fs.open(filesToBackup[x], "r")
  197.   local dataF = fileO.readAll()
  198.   fileO.close()
  199.   if filesToBackup[x]:find("/") then
  200.   local fileToBackR = filesToBackup[x]:reverse()
  201.   local fileNameR = fileToBackR:find("%a+/")
  202.   local fileName = fileNameR:reverse()
  203.   local fileBack = fs.open("/disk/backupFolder"..fileName, "w")
  204.   fileBack.write(dataF)
  205.   fileBack.close()
  206.   print("File backuped")
  207.  else
  208.    local fileBack = fs.open("/disk/backupFolder/"..filesToBackup[x], "w")
  209.   fileBack.write(dataF)
  210.   fileBack.close()
  211.   print("File backuped")
  212.  end
  213.  end
  214.  end
  215. end
  216.  
  217. local function restoreDisk()
  218.  if fs.exists("/disk/backupFolder") then
  219.   local filesRestore = fs.list("/disk/backupFolder")
  220.   for x=1, #filesRestore do
  221.    local filesR = fs.open("/disk/backupFolder/"..filesRestore[x], "r")
  222.    local dataF = filesR.readAll()
  223.    filesR.close()
  224.    table.insert(filesRewrite, filesRestore[x])
  225.    table.insert(filesRewrite, dataF)
  226.   end
  227.   writeBackup()
  228.  else
  229.   print("Error : disk restore : the backup folder doesn't exist on the disk")
  230.  end
  231. end
  232.  
  233. local function writeBackup()
  234.  for x=1, #filesRewrite/2, 2 do
  235.   local fileW = fs.open(filesRewrite[x], "w")
  236.   fileW.write(filesRewrite[x+1])
  237.   fileW.close()
  238.  end
  239. end
  240.  
  241. local x = "yes"
  242.  
  243. while x == "yes" do
  244. choose()
  245. print("Save another file ?")
  246. print("yes|no")
  247. local resp = string.lower(io.read())
  248.  if resp == "no" then
  249.   break
  250.  end
  251. end
Advertisement
Add Comment
Please, Sign In to add comment