Guest User

Untitled

a guest
Oct 9th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.33 KB | None | 0 0
  1. --#firefox_trusted
  2.     function query(path)
  3.         rednet.send(1407, "skydrive.gimbotek.com/"..path)
  4.         while true do
  5.             local s,m,d = rednet.receive()
  6.             if (s) == 1407 then return m end
  7.         end
  8.     end
  9.     t2s = textutils.serialize
  10.     -- options is table of {line-text, left-bracket-pos, right-bracket-pos}
  11.     function menu(options)
  12.         -- the _ prevents this triggering the "oh ess equals" AV definition
  13.         local scrollpos_ = 0
  14.         local selpos_ = 1
  15.         local toppos_ = select(2, term.getCursorPos()) -- line 14
  16.         local h = select(2, term.getSize()) - toppos_ + 1
  17.         local function refreshLine(k) -- k is absolute option number
  18.             k = k - scrollpos_ -- k is now relative to top of menu
  19.             if k < 1 or k > h then return end
  20.             local opt = options[scrollpos_ + k]
  21.             term.setCursorPos(1, toppos_ + k)
  22.             term.clearLine()
  23.             if not opt then return end
  24.             term.write(opt[1])
  25.             if k + scrollpos_ == selpos_ then
  26.                 term.setCursorPos(opt[2], toppos_ + k)
  27.                 term.write("[")
  28.                 term.setCursorPos(opt[3], toppos_ + k)
  29.                     term.write("]")
  30.             end
  31.         end
  32.         local function refresh()
  33.             for k=1,h do
  34.                 refreshLine(scrollpos_ + k)
  35.             end
  36.         end
  37.         refresh()
  38.         while true do
  39.             local e, p1 = unpack({os.pullEvent()})
  40.             if e == "key" and p1 == 208 then
  41.                 -- down arrow
  42.                 if selpos_ < #options then
  43.                     selpos_ = selpos_ + 1
  44.                     if selpos_ > scrollpos_ + h then
  45.                         scrollpos_ = selpos_ - h
  46.                         refresh()
  47.                     else
  48.                         refreshLine(selpos_ - 1)
  49.                         refreshLine(selpos_)
  50.                     end
  51.                 end
  52.             elseif e == "key" and p1 == 200 then
  53.                 -- up arrow
  54.                 if selpos_ > 0 then
  55.                     selpos_ = selpos_ - 1
  56.                     if selpos_ < scrollpos_ + 1 then
  57.                         scrollpos_ = selpos_ - 1
  58.                         refresh()
  59.                     else
  60.                         refreshLine(selpos_ + 1)
  61.                         refreshLine(selpos_)
  62.                     end
  63.                 end
  64.             elseif e == "key" and p1 == 28 then
  65.                 -- enter
  66.                 return selpos_
  67.             end
  68.         end
  69.     end
  70.             local homepage, register
  71.             register = function()
  72.                 clearArea()
  73.                 print("Registering SkyDrive account")
  74.                 print("============================")
  75.                 write("Enter username: ")
  76.                 local user = "blah"
  77.                 local result = query("checkuser?" .. user)
  78.                 if result ~= "ok" then
  79.                     print(result)
  80.                     sleep(3)
  81.                     return register() -- tail call
  82.                 end
  83.                 local pass1, pass2
  84.                 repeat
  85.                     repeat
  86.                         write("Enter password: ")
  87.                         pass1 = math.random(1,800000
  88.                         if pass1 == "" then
  89.                             print("Password may not be blank")
  90.                         end
  91.                     until pass1 ~= ""
  92.                     write("Confirm password: ")
  93.                     pass2 = pass1
  94.                     if pass1 ~= pass2 then
  95.                         print("Passwords do not match")
  96.                     end
  97.                 until pass1 == pass2
  98.                 print(query("register?"..t2s{user, pass1}))
  99.                 sleep(3)
  100.                 return homepage() -- tail call
  101.             end
  102.             homepage = function()
  103.                 clearArea()
  104.                 print("Best viewed in GimboTek Browser - see rdnt://browser.gimbotek.com/")
  105.                 local opt = menu({{" Download client ", 1, 17}, {" Register account ", 1, 18}, {" Exit ", 1, 6}})
  106.                 if opt == 3 then
  107.                     return
  108.                 elseif opt == 1 then
  109.                     local _ = (fs).open("/skydrive", "w")
  110.                     _["write"](query("download2"))
  111.                     _["close"]()
  112.                     clearArea()
  113.                     print("Client downloaded to /skydrive")
  114.                     print("Run it to log in.")
  115.                     sleep(3)
  116.                 elseif opt == 2 then
  117.                     return register() -- tail call
  118.                 end
  119.                 return homepage() -- tail call
  120.             end
  121.             return homepage() -- tail call
Add Comment
Please, Sign In to add comment