Update sPhone.lua

This commit is contained in:
Ale32bit 2015-12-24 16:17:55 +01:00
parent e2150cda96
commit 8c767e0daf

View file

@ -1,7 +1,7 @@
local function kernel() local function kernel()
_G.sPhone = { _G.sPhone = {
version = "Alpha 2.11", version = "Alpha 2.12",
user = "Run sID", user = "Guest",
devMode = false, devMode = false,
mainTerm = term.current() mainTerm = term.current()
} }
@ -108,10 +108,9 @@ local function kernel()
clear() clear()
w, h = term.getSize() w, h = term.getSize()
term.setCursorPos( (w/2)- 7, h/2) term.setCursorPos( (w/2)- 7, h/2)
write("Press CTRL + S") write("Shutdown Aborted.")
while true do sPhone.winOk("Error","Can not shutdown",colors.lightBlue,colors.red, colors.white, colors.lightBlue)
sleep(3600) return
end
end end
sPhone.doneShutdown = true sPhone.doneShutdown = true
clear() clear()
@ -131,10 +130,9 @@ local function kernel()
clear() clear()
w, h = term.getSize() w, h = term.getSize()
term.setCursorPos( (w/2)- 7, h/2) term.setCursorPos( (w/2)- 7, h/2)
write("Press CTRL + R") write("Reboot Aborted.")
while true do sPhone.winOk("Error","Can not reboot",colors.lightBlue,colors.red, colors.white, colors.lightBlue)
sleep(3600) return
end
end end
sPhone.doneShutdown = true sPhone.doneShutdown = true
clear() clear()
@ -426,7 +424,16 @@ end
local ok, err = pcall(function() setfenv(loadstring(script),getfenv())() end) local ok, err = pcall(function() setfenv(loadstring(script),getfenv())() end)
if not ok then if not ok then
os.pullEvent = os.pullEventRaw os.pullEvent = os.pullEventRaw
sPhone.winOk("Crash: "..fs.getName(_rApp), err) term.setBackgroundColor(colors.white)
term.setTextColor(colors.black)
term.clear()
term.setCursorPos(1,2)
visum.align("center"," "..fs.getName(_rApp).." crashed",false,2)
term.setCursorPos(1,4)
print(err)
print("")
visum.align("center"," Press Any Key")
os.pullEvent("key")
return false return false
end end
os.pullEvent = os.pullEventRaw os.pullEvent = os.pullEventRaw
@ -456,7 +463,96 @@ end
sleep(1) sleep(1)
end end
local function installedApps()
sPhone.winOk("Work In","Progress")
local dir = "/.sPhone/apps/storeApps/"
if not fs.exists(dir) then
fs.makeDir(dir)
end
local apps = {}
local appsName = {}
for k, v in pairs(fs.list(dir)) do
if fs.isDir(dir..v) then
if fs.exists(dir..v.."/sPhone-Main.lua") then
local nDir = dir..v.."/sPhone-Main.lua"
pDir = dir..v
local run = config.read(nDir, "run")
local name = config.read(nDir, "name")
local author = config.read(nDir, "author")
local version = config.read(nDir, "version")
appsName[name] = run
end
end
end
for k, v in pairs(appsName) do
table.insert(apps, v)
end
local function drawHome()
clear()
local w, h = term.getSize()
paintutils.drawLine(1,1,w,1, colors.blue)
term.setTextColor(colors.white)
visum.align("right","X",false,1)
visum.align("center", " Apps",false,1)
term.setTextColor(colors.black)
term.setBackgroundColor(colors.white)
term.setCursorPos(1,3)
for k, v in pairs(appsName) do
print(k)
end
end
drawHome()
local w, h = term.getSize()
while true do
drawHome()
local _,_,x,y = os.pullEvent("mouse_click")
if x == w and y == 1 then
break
elseif y >= 2 then
if apps[y-2] then
sPhone.run("/.sPhone/apps/storeApps/"..pDir.."/"..apps[y-2])
end
end
end
end
local function home() local function home()
local buttonsInHome = {
{"sPhone.header",23,1,25,1,colors.blue,colors.white,"vvv"},
{"sPhone.appsButton",12,20,14,20,colors.white,colors.blue,"==="},
{"sPhone.shell",2,3,8,5,colors.black,colors.yellow," Shell",2},
{"sPhone.sID",11,3,15,5,colors.red,colors.white," sID",2},
{"sPhone.lock",19,3,24,5,colors.lightGray,colors.black," Lock",2},
{"sPhone.buddies",2,7,10,9,colors.brown,colors.white," Buddies",2},
{"sPhone.chat",12,7,17,9,colors.black,colors.white," Chat",2},
{"sPhone.SMS",19,7,23,9,colors.green,colors.white," SMS",2},
{"sPhone.kst",3,11,7,13,colors.green,colors.lime," KST",2},
{"sPhone.gps",10,11,14,13,colors.red,colors.black," GPS",2},
{"sPhone.info",18,11,23,13,colors.lightGray,colors.black," Info",2},
{"sPhone.store",2,15,8,17,colors.orange,colors.white," Store",2},
}
local appsOnHome = {
["sPhone.shell"] = "/.sPhone/apps/shell",
["sPhone.sID"] = "/.sPhone/apps/system/sID",
["sPhone.buddies"] = "/.sPhone/apps/buddies",
["sPhone.SMS"] = "/.sPhone/apps/sms",
["sPhone.gps"] = "/.sPhone/apps/gps",
["sPhone.kst"] = "/.sPhone/apps/kstwallet",
["sPhone.info"] = "/.sPhone/apps/system/info",
["sPhone.store"] = "/.sPhone/apps/store",
}
--if not fs.exists("/.sPhone/config/resetDBNews") then --if not fs.exists("/.sPhone/config/resetDBNews") then
--sPhone.winOk("We wiped sID Database","for security issues") --sPhone.winOk("We wiped sID Database","for security issues")
--local f = fs.open("/.sPhone/config/resetDBNews","w") --local f = fs.open("/.sPhone/config/resetDBNews","w")
@ -488,19 +584,13 @@ end
else else
write(" New Update!") write(" New Update!")
end end
box(2,3,"Shell",colors.black,colors.yellow)
box(19,3,"Lock",colors.lightGray,colors.black) visum.buttons(buttonsInHome,true)
box(11,3,"sID",colors.red,colors.white)
box(2,7,"Buddies",colors.brown,colors.white)
box(12,7,"Chat", colors.black,colors.white)
box(19,7,"SMS",colors.green,colors.white)
box(3, 11, "KST", colors.green, colors.lime)
box(10, 11, "GPS", colors.red, colors.black)
box(18, 11, "Info", colors.lightGray, colors.black)
end end
local function footerMenu() local function footerMenu()
sPhone.isFooterMenuOpen = true sPhone.isFooterMenuOpen = true
function redraw() function redraw()
drawHome()
local w, h = term.getSize() local w, h = term.getSize()
graphics.box(1,2,w,4,colors.blue) graphics.box(1,2,w,4,colors.blue)
term.setTextColor(colors.white) term.setTextColor(colors.white)
@ -538,41 +628,18 @@ end
drawHome() drawHome()
term.setCursorBlink(false) term.setCursorBlink(false)
local autoLockTimer = os.startTimer(120) local autoLockTimer = os.startTimer(120)
local e,m,x,y = os.pullEvent() local id = visum.buttons(buttonsInHome)
if e == "mouse_click" then
if y == 1 then if id == "sPhone.header" then
if x < 26 and x > 22 then
footerMenu() footerMenu()
end elseif id == "sPhone.appsButton" then
else installedApps()
if (y > 2 and x > 1) and (y < 6 and x < 9) then elseif id == "sPhone.lock" then
os.pullEvent = os.oldPullEvent
term.setBackgroundColor(colors.black)
term.clear()
term.setCursorPos(1,1)
term.setTextColor(colors.white)
print("Type \"exit\" to close the shell")
sPhone.run("/rom/programs/shell")
elseif (y > 2 and x > 10) and (y < 7 and x < 16) then
sPhone.run("/.sPhone/apps/system/sID")
elseif (y > 2 and x > 18) and (y < 6 and x < 25) then
login() login()
elseif (y > 6 and x > 1) and (y < 10 and x < 11) then elseif id == "sPhone.chat" then
sPhone.run("/.sPhone/apps/buddies")
elseif (y > 6 and x > 11) and (y < 10 and x < 18) then
lChat() lChat()
elseif (y > 6 and x > 18) and (y < 10 and x < 24) then elseif appsOnHome[id] then
sPhone.run("/.sPhone/apps/sms") sPhone.run(appsOnHome[id])
elseif (y > 10 and x > 2) and (y < 14 and x < 8) then
sPhone.run("/.sPhone/apps/kstwallet")
elseif (y > 10 and x > 9) and (y < 14 and x < 15) then
sPhone.run("/.sPhone/apps/gps")
elseif (y > 10 and x > 17) and (y < 14 and x < 24) then
sPhone.run("/.sPhone/apps/system/info")
end
end
elseif e == "timer" and m == autoLockTimer then
login()
end end
end end
end end
@ -665,97 +732,22 @@ end
end end
end end
term.setBackgroundColor(colors.white) sPhone.run("/.sPhone/apps/system/sID")
term.clear()
term.setCursorPos(1,1)
local w, h = term.getSize()
paintutils.drawLine(1,1,w,1,colors.blue)
term.setTextColor(colors.black)
term.setBackgroundColor(colors.white)
visum.align("center"," Setup Sertex ID",false,3)
local isDown = http.get("http://sertex.x10.bz/status.php").readAll()
if isDown ~= "true" then
visum.align("center", " The server is down",false,5)
visum.align("center", " Run sID on the home",false,6)
name = "Run sID"
sleep(2)
else
local choose = sPhone.yesNo("Setup Sertex ID", "Do you have a Sertex ID?", true) local name
if not choose then
if fs.exists("/.sPhone/config/username") then
local f = fs.open("/.sPhone/config/username","r")
name = f.readLine()
f.close()
else
name = "Guest"
end
term.setBackgroundColor(colors.white) term.setBackgroundColor(colors.white)
term.clear() term.clear()
term.setCursorPos(1,1) term.setCursorPos(1,1)
local w, h = term.getSize()
paintutils.drawLine(1,1,w,1,colors.blue)
term.setTextColor(colors.black) term.setTextColor(colors.black)
term.setBackgroundColor(colors.white) _G.sPhone.user = name
visum.align("center"," Setup Sertex ID",false,3)
visum.align("center"," Your Username",false,5)
term.setCursorPos(3,8)
name = read()
while true do
visum.align("center", " Your Password",false,9)
term.setCursorPos(3,10)
term.clearLine()
pw = read("*")
visum.align("center", " Repeat",false,11)
term.setCursorPos(3,12)
term.clearLine()
pwr = read("*")
if pw == pwr then
break
else
print(" Wrong Password")
sleep(1)
end
end
local rServer = http.post("http://sertex.x10.bz/register.php", "user="..name.."&password="..pw).readAll()
if rServer ~= "Success!" then
print("Username already exists")
print("Retry later in the app sID")
sleep(2)
else
local f = fs.open("/.sPhone/config/username","w")
f.write(name)
f.close()
local pwf = fs.open("/.sPhone/config/.sIDPw", "w")
pwf.write(sha256.sha256(pw))
pwf.close()
end
else
term.setBackgroundColor(colors.white)
term.clear()
term.setCursorPos(1,1)
local w, h = term.getSize()
paintutils.drawLine(1,1,w,1,colors.blue)
term.setTextColor(colors.black)
term.setBackgroundColor(colors.white)
visum.align("center"," Setup Sertex ID",false,3)
visum.align("center"," Your Username",false,7)
term.setCursorPos(3,8)
name = read()
visum.align("center", " Your Password",false,9)
term.setCursorPos(3,10)
term.clearLine()
pw = read("*")
visum.align("center", " Checking...",false,11)
rServer = http.post("http://sertex.x10.bz/login.php", "user="..name.."&password="..pw).readAll()
if rServer ~= "true" then
print(" Wrong Username/Password")
print(" Run sID")
sleep(2)
else
f = fs.open("/.sPhone/config/username", "w")
f.write(name)
f.close()
f = fs.open("/.sPhone/config/.sIDpw", "w")
f.write(sha256.sha256(pw))
f.close()
end
end
end
sPhone.user = name
os.setComputerLabel(sPhone.user.."'s sPhone") os.setComputerLabel(sPhone.user.."'s sPhone")
term.setCursorPos(1,13) term.setCursorPos(1,13)
term.clearLine() term.clearLine()
@ -771,9 +763,13 @@ end
sPhone.lock = login sPhone.lock = login
sPhone.login = login sPhone.login = login
if not sPhone.devMode then
local newVersion = http.get("https://raw.githubusercontent.com/Sertex-Team/sPhone/master/src/version").readLine() local newVersion = http.get("https://raw.githubusercontent.com/Sertex-Team/sPhone/master/src/version").readLine()
if newVersion ~= sPhone.version then else
local newVersion = "DEV MODE"
end
if newVersion ~= sPhone.version and not sPhone.devMode then
sPhone.newUpdate = true sPhone.newUpdate = true
else else
sPhone.newUpdate = false sPhone.newUpdate = false