sPhone/src/apps/system/settings.lua

226 lines
6.5 KiB
Lua
Raw Normal View History

2015-09-21 21:34:35 +02:00
local pwChange
local pwChangeRep
2015-08-19 11:45:35 +02:00
local menu = {
"Update",
2016-03-20 17:27:54 +01:00
"Edit Theme",
2015-10-11 10:27:34 +02:00
"Change Password",
2015-11-10 19:14:27 +01:00
"Set Label",
"Clear Label",
2015-08-19 11:45:35 +02:00
}
local function clear()
2016-03-20 17:27:54 +01:00
term.setBackgroundColor(sPhone.theme["backgroundColor"])
term.setTextColor(sPhone.theme["text"])
2015-08-19 11:45:35 +02:00
term.clear()
term.setCursorPos(1,1)
end
local function changePassword()
while true do
2016-03-20 17:27:54 +01:00
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-08-19 11:45:35 +02:00
term.clear()
term.setCursorPos(1,1)
2016-03-20 17:27:54 +01:00
sPhone.header(sPhone.user)
paintutils.drawBox(7,9,20,11,sPhone.theme["window.background"])
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-08-19 11:45:35 +02:00
if sPhone.wrongPassword then
term.setTextColor(colors.red)
2016-03-20 17:27:54 +01:00
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-11-27 22:48:43 +01:00
visum.align("center"," Wrong Password",false,13)
2015-08-19 11:45:35 +02:00
end
2016-03-20 17:27:54 +01:00
term.setTextColor(sPhone.theme["text"])
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-11-27 22:48:43 +01:00
visum.align("center"," Current Password",false,7)
2015-09-21 21:34:35 +02:00
local loginTerm = window.create(term.native(), 8,10,12,1, true)
term.redirect(loginTerm)
2016-03-20 17:27:54 +01:00
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-09-21 21:34:35 +02:00
term.clear()
term.setCursorPos(1,1)
2016-03-20 17:27:54 +01:00
term.setTextColor(sPhone.theme["text"])
2015-09-21 21:34:35 +02:00
local password = read("*")
term.redirect(sPhone.mainTerm)
2015-11-13 23:22:40 +01:00
local fpw = fs.open("/.sPhone/config/.password","r")
2015-08-19 11:45:35 +02:00
if sha256.sha256(password) ~= fpw.readLine() then
sPhone.wrongPassword = true
else
sPhone.wrongPassword = false
fpw.close()
break
end
end
while true do
2016-03-20 17:27:54 +01:00
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-08-19 11:45:35 +02:00
term.clear()
term.setCursorPos(1,1)
2016-03-20 17:27:54 +01:00
sPhone.header(sPhone.user)
paintutils.drawBox(7,9,20,11,sPhone.theme["window.background"])
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-08-19 11:45:35 +02:00
if sPhone.wrongPassword then
term.setTextColor(colors.red)
2016-03-20 17:27:54 +01:00
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-11-27 22:48:43 +01:00
visum.align("center"," Wrong Password",false,13)
2015-08-19 11:45:35 +02:00
end
2016-03-20 17:27:54 +01:00
term.setTextColor(sPhone.theme["text"])
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-11-27 22:48:43 +01:00
visum.align("center"," New Password",false,7)
2015-09-21 21:34:35 +02:00
local loginTerm = window.create(term.native(), 8,10,12,1, true)
term.redirect(loginTerm)
2016-03-20 17:27:54 +01:00
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-09-21 21:34:35 +02:00
term.clear()
term.setCursorPos(1,1)
2016-03-20 17:27:54 +01:00
term.setTextColor(sPhone.theme["text"])
2015-09-21 21:34:35 +02:00
pwChange = read("*")
term.redirect(sPhone.mainTerm)
2015-08-19 11:45:35 +02:00
2016-03-20 17:27:54 +01:00
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-08-19 11:45:35 +02:00
term.clear()
term.setCursorPos(1,1)
2016-03-20 17:27:54 +01:00
sPhone.header(sPhone.user)
paintutils.drawBox(7,9,20,11,sPhone.theme["window.background"])
term.setBackgroundColor(sPhone.theme["backgroundColor"])
term.setTextColor(sPhone.theme["text"])
2015-11-27 22:48:43 +01:00
visum.align("center"," Repeat Password",false,7)
2015-09-21 21:34:35 +02:00
local loginTerm = window.create(term.native(), 8,10,12,1, true)
term.redirect(loginTerm)
2016-03-20 17:27:54 +01:00
term.setBackgroundColor(sPhone.theme["backgroundColor"])
2015-09-21 21:34:35 +02:00
term.clear()
term.setCursorPos(1,1)
2016-03-20 17:27:54 +01:00
term.setTextColor(sPhone.theme["text"])
2015-09-21 21:34:35 +02:00
pwChangeRep = read("*")
term.redirect(sPhone.mainTerm)
2015-08-19 11:45:35 +02:00
if sha256.sha256(pwChange) ~= sha256.sha256(pwChangeRep) then
sPhone.wrongPassword = true
else
sPhone.wrongPassword = false
break
end
end
if not sPhone.wrongPassword then
2015-11-13 23:22:40 +01:00
local f = fs.open("/.sPhone/config/.password","w")
2015-08-19 11:45:35 +02:00
f.write(sha256.sha256(pwChangeRep))
f.close()
end
2016-03-20 17:27:54 +01:00
sPhone.header(sPhone.user)
visum.align("center", "All Set!", false, 3)
2015-08-19 11:45:35 +02:00
sleep(2)
return
end
2015-11-10 19:14:27 +01:00
local function changeLabel()
2016-03-20 17:27:54 +01:00
sPhone.header(sPhone.user)
2016-03-27 15:31:49 +02:00
visum.align("center", " Set Label",false,3)
2015-11-10 19:14:27 +01:00
term.setCursorPos(2,5)
local newLabel = read()
2016-03-27 15:31:49 +02:00
newLabel = newLabel:gsub("&", string.char(0xc2)..string.char(0xa7)) --yay colors
2015-11-10 19:14:27 +01:00
os.setComputerLabel(newLabel)
sPhone.winOk("Computer Label set")
end
local function clearLabel()
os.setComputerLabel(nil)
sPhone.winOk("Computer Label cleared")
end
2016-03-20 17:27:54 +01:00
local function editTheme()
local themeOptions = {
"Header Color",
"Header Text Color",
"Text Color",
"Background Color",
"Window Options",
"Save",
"Load",
"Reset",
}
local themeOptionsWindow = {
"Background",
"Side",
"Button",
"Text",
}
while true do
local _, id = sPhone.menu(themeOptions,"Theme","X")
if id == 0 then
return
elseif id == 1 then
sPhone.applyTheme("header", sPhone.colorPicker("Header",sPhone.getTheme("header")))
elseif id == 2 then
sPhone.applyTheme("headerText", sPhone.colorPicker("Header Text",sPhone.getTheme("headerText")))
elseif id == 3 then
sPhone.applyTheme("text", sPhone.colorPicker("Text",sPhone.getTheme("text")))
elseif id == 4 then
sPhone.applyTheme("backgroundColor", sPhone.colorPicker("Background Color",sPhone.getTheme("backgroundColor")))
elseif id == 5 then
while true do
local _, id = sPhone.menu(themeOptionsWindow,"Window Theme","X")
if id == 0 then
return
elseif id == 1 then
sPhone.applyTheme("window.background", sPhone.colorPicker("Background",sPhone.getTheme("window.background")))
elseif id == 2 then
sPhone.applyTheme("window.side", sPhone.colorPicker("Side",sPhone.getTheme("window.side")))
elseif id == 3 then
sPhone.applyTheme("window.button", sPhone.colorPicker("Button",sPhone.getTheme("window.button")))
elseif id == 4 then
sPhone.applyTheme("window.text", sPhone.colorPicker("Text",sPhone.getTheme("window.text")))
end
end
elseif id == 6 then
sPhone.header()
visum.align("center", "Save Theme",false,3)
term.setCursorPos(2,5)
local saveTheme = read()
if fs.exists(saveTheme) then
fs.delete(saveTheme)
end
fs.copy("/.sPhone/config/theme", saveTheme)
sPhone.winOk("Theme saved!")
elseif id == 7 then
sPhone.header()
visum.align("center", "Load Theme",false,3)
term.setCursorPos(2,5)
local loadTheme = read()
if fs.exists(loadTheme) and not fs.isDir(loadTheme) then
2016-03-24 11:42:58 +01:00
for k, v in pairs(sPhone.theme) do -- Load theme
2016-03-24 11:27:33 +01:00
sPhone.theme[k] = config.read(loadTheme, k)
2016-03-20 17:27:54 +01:00
end
2016-03-24 11:42:58 +01:00
for k, v in pairs(sPhone.theme) do -- Overwrite theme config
config.write("/.sPhone/config/theme", k, v)
end
2016-03-20 17:27:54 +01:00
sPhone.winOk("Theme loaded!")
else
sPhone.winok("Theme not found!")
end
elseif id == 8 then
for k, v in pairs(sPhone.defaultTheme) do
config.write("/.sPhone/config/theme", k, v)
end
sPhone.theme = sPhone.defaultTheme
sPhone.winOk("Removed Theme")
end
end
end
2016-03-19 23:01:34 +01:00
while true do
2016-03-19 23:31:40 +01:00
clear()
sPhone.header("","X")
2016-03-19 23:01:34 +01:00
local name, id = sPhone.menu(menu, "Settings","X")
if id == 0 then
return
elseif id == 1 then
setfenv(loadstring(http.get("https://raw.githubusercontent.com/Sertex-Team/sPhone/master/src/installer.lua").readAll()),getfenv())()
elseif id == 2 then
2016-03-20 17:27:54 +01:00
editTheme()
2016-03-19 23:01:34 +01:00
elseif id == 3 then
2016-03-20 17:27:54 +01:00
changePassword()
2016-03-19 23:01:34 +01:00
elseif id == 4 then
2016-03-20 17:27:54 +01:00
changeLabel()
elseif id == 5 then
2016-03-19 23:01:34 +01:00
clearLabel()
end
end