Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --#firefox_trusted
- function query(path)
- rednet.send(1407, "skydrive.gimbotek.com/"..path)
- while true do
- local s,m,d = rednet.receive()
- if (s) == 1407 then return m end
- end
- end
- t2s = textutils.serialize
- -- options is table of {line-text, left-bracket-pos, right-bracket-pos}
- function menu(options)
- -- the _ prevents this triggering the "oh ess equals" AV definition
- local scrollpos_ = 0
- local selpos_ = 1
- local toppos_ = select(2, term.getCursorPos()) -- line 14
- local h = select(2, term.getSize()) - toppos_ + 1
- local function refreshLine(k) -- k is absolute option number
- k = k - scrollpos_ -- k is now relative to top of menu
- if k < 1 or k > h then return end
- local opt = options[scrollpos_ + k]
- term.setCursorPos(1, toppos_ + k)
- term.clearLine()
- if not opt then return end
- term.write(opt[1])
- if k + scrollpos_ == selpos_ then
- term.setCursorPos(opt[2], toppos_ + k)
- term.write("[")
- term.setCursorPos(opt[3], toppos_ + k)
- term.write("]")
- end
- end
- local function refresh()
- for k=1,h do
- refreshLine(scrollpos_ + k)
- end
- end
- refresh()
- while true do
- local e, p1 = unpack({os.pullEvent()})
- if e == "key" and p1 == 208 then
- -- down arrow
- if selpos_ < #options then
- selpos_ = selpos_ + 1
- if selpos_ > scrollpos_ + h then
- scrollpos_ = selpos_ - h
- refresh()
- else
- refreshLine(selpos_ - 1)
- refreshLine(selpos_)
- end
- end
- elseif e == "key" and p1 == 200 then
- -- up arrow
- if selpos_ > 0 then
- selpos_ = selpos_ - 1
- if selpos_ < scrollpos_ + 1 then
- scrollpos_ = selpos_ - 1
- refresh()
- else
- refreshLine(selpos_ + 1)
- refreshLine(selpos_)
- end
- end
- elseif e == "key" and p1 == 28 then
- -- enter
- return selpos_
- end
- end
- end
- local homepage, register
- register = function()
- clearArea()
- print("Registering SkyDrive account")
- print("============================")
- write("Enter username: ")
- local user = "blah"
- local result = query("checkuser?" .. user)
- if result ~= "ok" then
- print(result)
- sleep(3)
- return register() -- tail call
- end
- local pass1, pass2
- repeat
- repeat
- write("Enter password: ")
- pass1 = math.random(1,800000
- if pass1 == "" then
- print("Password may not be blank")
- end
- until pass1 ~= ""
- write("Confirm password: ")
- pass2 = pass1
- if pass1 ~= pass2 then
- print("Passwords do not match")
- end
- until pass1 == pass2
- print(query("register?"..t2s{user, pass1}))
- sleep(3)
- return homepage() -- tail call
- end
- homepage = function()
- clearArea()
- print("Best viewed in GimboTek Browser - see rdnt://browser.gimbotek.com/")
- local opt = menu({{" Download client ", 1, 17}, {" Register account ", 1, 18}, {" Exit ", 1, 6}})
- if opt == 3 then
- return
- elseif opt == 1 then
- local _ = (fs).open("/skydrive", "w")
- _["write"](query("download2"))
- _["close"]()
- clearArea()
- print("Client downloaded to /skydrive")
- print("Run it to log in.")
- sleep(3)
- elseif opt == 2 then
- return register() -- tail call
- end
- return homepage() -- tail call
- end
- return homepage() -- tail call
Add Comment
Please, Sign In to add comment