#!/bin/flua
-- flua Webdata, backup/restore to WebSapce via ftp
-- (C) Robert Shingledecker 2004

function make_netrc(command)
   if url.value == "" then return nil end
   if login.value == "" then return nil end
   if password.value == "" then return nil end
   if datakey.value == "" then return nil end
   writeto(".netrc")
   write("machine " .. url.value .. "\n")
   write("login " .. login.value .. "\n")
   write("passwd " .. password.value .. "\n")
   write("macdef init\n")
   write("bin\n")
   write("prompt\n")
   write(command .. " data.des\n")
   write("close\n")
   write("bye\n")
   write("\n")	
   flush()
   return ""
end

function get_login()

   w = Window{320,175, "Webdata backup/restore"}
   url = Input{76,10,210,25,"FTP URL:"}
   if url.value == "" then
    url.value = "ftp.users.yourISP.com"
   end
   login = Input{76,40,210,25,"Login:"}
   if login.value == "" then
    login.value = "your_login_name"
   end 
   password = Secret_Input{76,70,210,25,"Password:"}
   datakey = Secret_Input{76,100,210,25,"Datakey:"}
 
   cancel = Button{56,130,70,25,"&Cancel"}
   function cancel:callback()
     exit(0)
   end

   backup = Button{130,130,70,25,"&Backup"}
   function backup:callback()
      if make_netrc("put") then
         execute('sudo tar -C / -T /home/dsl/webdata.lst --exclude=Cache -czf data.tar.gz')
         execute('/usr/bin/des -E -3 -k ' .. datakey.value .. ' data.tar.gz data.des')
         execute('/usr/bin/ftp ' .. url.value)
         execute('> .netrc')
         remove("data.des")
         remove("data.tar.gz")
         exit(0)
      else
         print("Error")
         write(strchar(7)) flush()
      end
   end

   restore = Button{205,130,70,25,"&Restore"}
   function restore:callback()
      if make_netrc("get") then
         execute('/usr/bin/ftp ' .. url.value)
         execute('/usr/bin/des -D -3 -k ' .. datakey.value .. ' data.des data.tar.gz')
         execute('sudo tar -C / -zxf data.tar.gz')
         execute('> .netrc')
         remove("data.des")
         remove("data.tar.gz")
         exit(0)
      else
         print("Error")
         write(strchar(7)) flush()
      end
   end

   w:end_layout()
   w:show()
end

-- Main
get_login()
