Compare commits
No commits in common. "a2546cb9ba2fa5e84d30d38212faee4f898f793a" and "bacd5ac1aa63ad2e7cc5d7ba49cc31cad16ba5ef" have entirely different histories.
a2546cb9ba
...
bacd5ac1aa
3033
basalt.lua
Normal file
3033
basalt.lua
Normal file
File diff suppressed because one or more lines are too long
75
keypadOS.lua
75
keypadOS.lua
|
@ -7,21 +7,24 @@ local require = function(path)
|
||||||
return __DEFAULT_IMPORT(path)
|
return __DEFAULT_IMPORT(path)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local KEYPADOS_UPDATE_HASH = "ThZGemtZHshNpaflGvUHcJoZ"rawset(__BUNDLER_FILES, "updater.lua", function ()
|
local KEYPADOS_UPDATE_HASH = "sxJGuLGHFrttJcPZAxUKxhPw"
|
||||||
|
rawset(__BUNDLER_FILES, "updater.lua", function ()
|
||||||
local utils = require("utils.lua")
|
local utils = require("utils.lua")
|
||||||
local config = require("config.lua")
|
|
||||||
local LAST_USED = os.time()
|
local LAST_USED = os.time()
|
||||||
local mod = {}
|
local mod = {}
|
||||||
local function checkForUpdate()
|
local function checkForUpdate()
|
||||||
local current_time = os.time()
|
local current_time = os.time()
|
||||||
local difference = math.abs(current_time - LAST_USED)
|
local difference = math.abs(current_time - LAST_USED)
|
||||||
if difference > .5 then
|
print("Checking for update... difference: " .. tostring(difference))
|
||||||
print("INFO: Updating! (diff: " .. tostring(difference) .. ")")
|
--its been considerable time since the keypad was interacted with
|
||||||
local update_code_request = http.get(config.release_url .. "?x=" .. tostring(math.random(11111111, 99999999))) -- I HATE CACHE REEEEEEEEEEEEEEEEE
|
--therefore it's time to force an update down the users throat (microsoft moment)
|
||||||
|
if difference > 10 then
|
||||||
|
local update_code_request = http.get("https://git.mcorangehq.xyz/xomf/keypadOS/raw/branch/main/keypadOS.lua?x=" .. tostring(math.random(11111111, 99999999))) -- I HATE CACHE REEEEEEEEEEEEEEEEE
|
||||||
if update_code_request then
|
if update_code_request then
|
||||||
local update_code_text = update_code_request.readAll()
|
local update_code_text = update_code_request.readAll()
|
||||||
if update_code_text then
|
if update_code_text then
|
||||||
if string.find(update_code_text, "^local __BUNDLER_FILES = {}") then
|
if string.find(update_code_text, "^local __BUNDLER_FILES = {}") then
|
||||||
|
-- Make backup
|
||||||
if fs.exists("backup.lua") then
|
if fs.exists("backup.lua") then
|
||||||
fs.delete("backup.lua")
|
fs.delete("backup.lua")
|
||||||
end
|
end
|
||||||
|
@ -58,7 +61,7 @@ local KEYPADOS_UPDATE_HASH = "ThZGemtZHshNpaflGvUHcJoZ"rawset(__BUNDLER_FILES, "
|
||||||
utils.MonPrint("Basalt found!")
|
utils.MonPrint("Basalt found!")
|
||||||
else
|
else
|
||||||
utils.MonPrint("Downloading basalt...")
|
utils.MonPrint("Downloading basalt...")
|
||||||
local basalt_code = http.get(config.release_url).readAll()
|
local basalt_code = http.get("https://raw.githubusercontent.com/Pyroxenium/Basalt/master/docs/versions/latest.lua").readAll()
|
||||||
utils.MonPrint("Installing basalt...")
|
utils.MonPrint("Installing basalt...")
|
||||||
local file = fs.open("basalt.lua", "w")
|
local file = fs.open("basalt.lua", "w")
|
||||||
if not file then
|
if not file then
|
||||||
|
@ -73,36 +76,35 @@ local KEYPADOS_UPDATE_HASH = "ThZGemtZHshNpaflGvUHcJoZ"rawset(__BUNDLER_FILES, "
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return mod
|
return mod
|
||||||
end)
|
|
||||||
|
end) -- FILE END: updater.lua --
|
||||||
|
|
||||||
rawset(__BUNDLER_FILES, "config.lua", function ()
|
rawset(__BUNDLER_FILES, "config.lua", function ()
|
||||||
local config = {
|
return {
|
||||||
correctPin = "42169",
|
correctPin = "42069"
|
||||||
release_url = "https://git.mcorangehq.xyz/xomf/keypadOS/raw/branch/main/keypadOS.lua",
|
|
||||||
basalt_url = "https://raw.githubusercontent.com/Pyroxenium/Basalt/master/docs/versions/latest.lua",
|
|
||||||
config_path = "keypadOS.config.lua"
|
|
||||||
}
|
}
|
||||||
local DEFAULT_CONFIG = "return {\n" ..
|
|
||||||
" group=\"default\",\n" ..
|
end) -- FILE END: config.lua --
|
||||||
"}\n"
|
|
||||||
function config.ReadConfig()
|
|
||||||
if not fs.exists(config.config_path) then
|
|
||||||
local f = fs.open(config.config_path, "w")
|
|
||||||
f.write(DEFAULT_CONFIG)
|
|
||||||
f.close();
|
|
||||||
end
|
|
||||||
local cfg = require(config.config_path)
|
|
||||||
return cfg
|
|
||||||
end
|
|
||||||
return config
|
|
||||||
end)
|
|
||||||
rawset(__BUNDLER_FILES, "ui.lua", function ()
|
rawset(__BUNDLER_FILES, "ui.lua", function ()
|
||||||
local utils = require("utils.lua")
|
local utils = require("utils.lua")
|
||||||
local basalt = require("basalt")
|
local basalt = require("basalt")
|
||||||
local config = require("config.lua")
|
local config = require("config.lua")
|
||||||
local updater = require("updater.lua")
|
local updater = require("updater.lua")
|
||||||
|
--- @type Monitor
|
||||||
local monitor = utils.Cast(peripheral.find("monitor"))
|
local monitor = utils.Cast(peripheral.find("monitor"))
|
||||||
|
--- @type drive
|
||||||
local drive = utils.Cast(peripheral.find("drive"))
|
local drive = utils.Cast(peripheral.find("drive"))
|
||||||
local mod = {}
|
local mod = {}
|
||||||
|
--- @class Ui
|
||||||
|
--- @field pin string
|
||||||
|
--- @field main any
|
||||||
|
--- @field pinLabel any
|
||||||
|
--- @field enterButton any
|
||||||
|
--- @field resetEverything function
|
||||||
|
--- @field unlockDoor function
|
||||||
|
--- @field addToPin function
|
||||||
|
--- @param ui Ui
|
||||||
local function resetEverything(ui)
|
local function resetEverything(ui)
|
||||||
sleep(2)
|
sleep(2)
|
||||||
ui.pin = ""
|
ui.pin = ""
|
||||||
|
@ -110,6 +112,7 @@ rawset(__BUNDLER_FILES, "ui.lua", function ()
|
||||||
redstone.setOutput("front", false)
|
redstone.setOutput("front", false)
|
||||||
ui.enterButton:setBackground(colors.blue)
|
ui.enterButton:setBackground(colors.blue)
|
||||||
end
|
end
|
||||||
|
--- @param ui Ui
|
||||||
local function unlockDoor(ui)
|
local function unlockDoor(ui)
|
||||||
if drive.isDiskPresent() then
|
if drive.isDiskPresent() then
|
||||||
if drive.getDiskLabel() == config.correctPin then
|
if drive.getDiskLabel() == config.correctPin then
|
||||||
|
@ -137,6 +140,7 @@ rawset(__BUNDLER_FILES, "ui.lua", function ()
|
||||||
resetEverything(ui)
|
resetEverything(ui)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
--- @param ui Ui
|
||||||
local function addToPin(ui, i)
|
local function addToPin(ui, i)
|
||||||
if #ui.pin >= 5 then
|
if #ui.pin >= 5 then
|
||||||
return
|
return
|
||||||
|
@ -199,12 +203,19 @@ rawset(__BUNDLER_FILES, "ui.lua", function ()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return mod
|
return mod
|
||||||
end)
|
|
||||||
|
end) -- FILE END: ui.lua --
|
||||||
|
|
||||||
rawset(__BUNDLER_FILES, "utils.lua", function ()
|
rawset(__BUNDLER_FILES, "utils.lua", function ()
|
||||||
local utils = {}
|
local utils = {}
|
||||||
|
-- Type coersion for lsp
|
||||||
|
---@generic T
|
||||||
|
---@param object any
|
||||||
|
---@return T
|
||||||
function utils.Cast(object)
|
function utils.Cast(object)
|
||||||
return object
|
return object
|
||||||
end
|
end
|
||||||
|
--- @type Monitor
|
||||||
local MONITOR = utils.Cast(peripheral.find("monitor"))
|
local MONITOR = utils.Cast(peripheral.find("monitor"))
|
||||||
local MONITOR_Y = 1
|
local MONITOR_Y = 1
|
||||||
function utils.MonPrint(text)
|
function utils.MonPrint(text)
|
||||||
|
@ -217,8 +228,12 @@ rawset(__BUNDLER_FILES, "utils.lua", function ()
|
||||||
MONITOR.setTextScale(scale)
|
MONITOR.setTextScale(scale)
|
||||||
end
|
end
|
||||||
return utils;
|
return utils;
|
||||||
end)
|
|
||||||
|
end) -- FILE END: utils.lua --
|
||||||
|
|
||||||
rawset(__BUNDLER_FILES, "main.lua", function ()
|
rawset(__BUNDLER_FILES, "main.lua", function ()
|
||||||
|
-- keycardOS "bootloader", has no access to basalt
|
||||||
|
-- intended for checking for updates, and automatically updating basalt if it is missing
|
||||||
local utils = require("utils.lua")
|
local utils = require("utils.lua")
|
||||||
local updater = require("updater.lua")
|
local updater = require("updater.lua")
|
||||||
local main = {}
|
local main = {}
|
||||||
|
@ -231,5 +246,7 @@ rawset(__BUNDLER_FILES, "main.lua", function ()
|
||||||
require("ui.lua").InitUi()
|
require("ui.lua").InitUi()
|
||||||
end
|
end
|
||||||
return main
|
return main
|
||||||
end)
|
|
||||||
|
end) -- FILE END: main.lua --
|
||||||
|
|
||||||
require("main.lua").Main()
|
require("main.lua").Main()
|
||||||
|
|
|
@ -1,28 +1,3 @@
|
||||||
local config = {
|
return {
|
||||||
correctPin = "42169",
|
correctPin = "42069"
|
||||||
release_url = "https://git.mcorangehq.xyz/xomf/keypadOS/raw/branch/main/keypadOS.lua",
|
|
||||||
basalt_url = "https://raw.githubusercontent.com/Pyroxenium/Basalt/master/docs/versions/latest.lua",
|
|
||||||
ntfy_url = "https://ntfy.sh/keypadOS_alerts",
|
|
||||||
config_path = "keypadOS.config.lua"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
local DEFAULT_CONFIG = "return {\n" ..
|
|
||||||
" group=\"default\",\n" ..
|
|
||||||
"}\n"
|
|
||||||
|
|
||||||
--- @class Config
|
|
||||||
--- @field group string
|
|
||||||
|
|
||||||
--- Read current configs, create if doesnt exist
|
|
||||||
---@return Config
|
|
||||||
function config.ReadConfig()
|
|
||||||
if not fs.exists(config.config_path) then
|
|
||||||
local f = fs.open(config.config_path, "w")
|
|
||||||
f.write(DEFAULT_CONFIG)
|
|
||||||
f.close();
|
|
||||||
end
|
|
||||||
local cfg = require(config.config_path)
|
|
||||||
return cfg
|
|
||||||
end
|
|
||||||
|
|
||||||
return config
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
-- intended for checking for updates, and automatically updating basalt if it is missing
|
-- intended for checking for updates, and automatically updating basalt if it is missing
|
||||||
local utils = require("utils.lua")
|
local utils = require("utils.lua")
|
||||||
local updater = require("updater.lua")
|
local updater = require("updater.lua")
|
||||||
|
|
||||||
|
|
||||||
local main = {}
|
local main = {}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,7 @@ function mod.InitUi()
|
||||||
|
|
||||||
if not status and err ~= "Terminated" then
|
if not status and err ~= "Terminated" then
|
||||||
print("Error detected: " .. err)
|
print("Error detected: " .. err)
|
||||||
http.post(config.ntfy_url, err, {Priority = "urgent"}) --exposed ntfy url no spam me pls
|
http.post("https://ntfy.sh/keypadOS_alerts", err, {Priority = "urgent"}) --exposed ntfy url no spam me pls
|
||||||
sleep(5)
|
sleep(5)
|
||||||
utils.MonReset(0.5)
|
utils.MonReset(0.5)
|
||||||
fs.delete("basalt.lua")
|
fs.delete("basalt.lua")
|
||||||
|
|
|
@ -1,23 +1,17 @@
|
||||||
local utils = require("utils.lua")
|
local utils = require("utils.lua")
|
||||||
local config = require("config.lua")
|
|
||||||
local LAST_USED = os.time()
|
local LAST_USED = os.time()
|
||||||
|
|
||||||
local mod = {}
|
local mod = {}
|
||||||
|
|
||||||
-- For lsp, shouldnt ever be check for true
|
|
||||||
if not __UPDATE_HASH then
|
|
||||||
__UPDATE_HASH = "WHATTHEFUCK";
|
|
||||||
end
|
|
||||||
|
|
||||||
local function checkForUpdate()
|
local function checkForUpdate()
|
||||||
local current_time = os.time()
|
local current_time = os.time()
|
||||||
local difference = math.abs(current_time - LAST_USED)
|
local difference = math.abs(current_time - LAST_USED)
|
||||||
-- print("INFO: Checking for update... difference: " .. tostring(difference))
|
print("Checking for update... difference: " .. tostring(difference))
|
||||||
--its been considerable time since the keypad was interacted with
|
--its been considerable time since the keypad was interacted with
|
||||||
--therefore it's time to force an update down the users throat (microsoft moment)
|
--therefore it's time to force an update down the users throat (microsoft moment)
|
||||||
if difference > .5 then
|
if difference > 10 then
|
||||||
print("INFO: Updating! (diff: " .. tostring(difference) .. ")")
|
local update_code_request = http.get("https://git.mcorangehq.xyz/xomf/keypadOS/raw/branch/main/keypadOS.lua?x=" .. tostring(math.random(11111111, 99999999))) -- I HATE CACHE REEEEEEEEEEEEEEEEE
|
||||||
local update_code_request = http.get(config.release_url .. "?x=" .. tostring(math.random(11111111, 99999999))) -- I HATE CACHE REEEEEEEEEEEEEEEEE
|
|
||||||
if update_code_request then
|
if update_code_request then
|
||||||
local update_code_text = update_code_request.readAll()
|
local update_code_text = update_code_request.readAll()
|
||||||
if update_code_text then
|
if update_code_text then
|
||||||
|
@ -28,7 +22,7 @@ local function checkForUpdate()
|
||||||
end
|
end
|
||||||
fs.copy("startup.lua", "backup.lua")
|
fs.copy("startup.lua", "backup.lua")
|
||||||
|
|
||||||
if not string.find(update_code_text, __UPDATE_HASH) then
|
if not string.find(update_code_text, KEYPADOS_UPDATE_HASH) then
|
||||||
local file = fs.open("startup.lua", "w")
|
local file = fs.open("startup.lua", "w")
|
||||||
file.write(update_code_text)
|
file.write(update_code_text)
|
||||||
file.close()
|
file.close()
|
||||||
|
@ -62,7 +56,7 @@ function mod.GetBasalt()
|
||||||
utils.MonPrint("Basalt found!")
|
utils.MonPrint("Basalt found!")
|
||||||
else
|
else
|
||||||
utils.MonPrint("Downloading basalt...")
|
utils.MonPrint("Downloading basalt...")
|
||||||
local basalt_code = http.get(config.release_url).readAll()
|
local basalt_code = http.get("https://raw.githubusercontent.com/Pyroxenium/Basalt/master/docs/versions/latest.lua").readAll()
|
||||||
utils.MonPrint("Installing basalt...")
|
utils.MonPrint("Installing basalt...")
|
||||||
|
|
||||||
local file = fs.open("basalt.lua", "w")
|
local file = fs.open("basalt.lua", "w")
|
||||||
|
|
27
x.py
27
x.py
|
@ -11,34 +11,19 @@ FILES= [
|
||||||
"main.lua",
|
"main.lua",
|
||||||
]
|
]
|
||||||
|
|
||||||
MINIMISE=True
|
|
||||||
|
|
||||||
def read_file(p: str) -> str:
|
def read_file(p: str) -> str:
|
||||||
buf = "";
|
buf = "";
|
||||||
with open("src/"+p, "r", encoding="utf-8") as f:
|
with open("src/"+p, "r", encoding="utf-8") as f:
|
||||||
buf += f"rawset(__BUNDLER_FILES, \"{p}\", function ()\n";
|
buf += f"\nrawset(__BUNDLER_FILES, \"{p}\", function ()\n";
|
||||||
for line in f.readlines():
|
for line in f.readlines():
|
||||||
|
if str.strip(line) != "":
|
||||||
buf += " " + line;
|
buf += " " + line;
|
||||||
buf += "\nend)";
|
buf += f"\nend) -- FILE END: {p} --\n";
|
||||||
if not MINIMISE:
|
|
||||||
buf += f"-- FILE END: {p} --\n";
|
|
||||||
else:
|
|
||||||
buf += "\n";
|
|
||||||
return buf;
|
return buf;
|
||||||
|
|
||||||
def minimise(buf: str) -> str:
|
|
||||||
newbuf = "";
|
|
||||||
for line in buf.splitlines():
|
|
||||||
if line.strip().startswith("--"):
|
|
||||||
continue;
|
|
||||||
if line.strip() == "":
|
|
||||||
continue
|
|
||||||
newbuf += line + "\n";
|
|
||||||
return newbuf;
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
buf = ""
|
buf = ""
|
||||||
buf += "local __UPDATE_HASH = \"" + {UPDATE_ID} + "\"";
|
|
||||||
buf += "local __BUNDLER_FILES = {}\n";
|
buf += "local __BUNDLER_FILES = {}\n";
|
||||||
buf += "local __DEFAULT_IMPORT = require\n";
|
buf += "local __DEFAULT_IMPORT = require\n";
|
||||||
buf += "local require = function(path)\n";
|
buf += "local require = function(path)\n";
|
||||||
|
@ -48,16 +33,14 @@ def main():
|
||||||
buf += " return __DEFAULT_IMPORT(path)\n";
|
buf += " return __DEFAULT_IMPORT(path)\n";
|
||||||
buf += " end\n";
|
buf += " end\n";
|
||||||
buf += "end\n";
|
buf += "end\n";
|
||||||
|
buf += f'local KEYPADOS_UPDATE_HASH = "{UPDATE_ID}"';
|
||||||
|
|
||||||
for file in FILES:
|
for file in FILES:
|
||||||
print(f"=== FILE: {file}");
|
print(f"=== FILE: {file}");
|
||||||
buf += read_file(file);
|
buf += read_file(file);
|
||||||
print(f"=== UPDATE HASH: {UPDATE_ID}")
|
print(f"=== UPDATE HASH: {UPDATE_ID}")
|
||||||
|
|
||||||
buf += "require(\"main.lua\").Main()\n";
|
buf += "\nrequire(\"main.lua\").Main()\n";
|
||||||
|
|
||||||
if MINIMISE:
|
|
||||||
buf = minimise(buf);
|
|
||||||
|
|
||||||
with open(OUTPUT, "w", encoding="utf-8") as f:
|
with open(OUTPUT, "w", encoding="utf-8") as f:
|
||||||
f.write(buf);
|
f.write(buf);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user