From 94412549fb6266d9717152ee4bdf32f15edcc5ba Mon Sep 17 00:00:00 2001 From: Moonlit Productions Date: Fri, 2 Jan 2026 23:08:01 -0500 Subject: [PATCH] Add multi-server support for the repo/installer --- addresses.lua | 48 --------------------------- config.lua | 5 +++ install.lua | 89 ++++++++++++++++++++++++++++++++++++++++++--------- startup.lua | 42 +++++++++++++++++++++++- 4 files changed, 120 insertions(+), 64 deletions(-) delete mode 100644 addresses.lua diff --git a/addresses.lua b/addresses.lua deleted file mode 100644 index 15ca3cd..0000000 --- a/addresses.lua +++ /dev/null @@ -1,48 +0,0 @@ ---[[ - Address Book - Contains all known stargate addresses organized by category -]] - -local addresses = {} - ---------------------------------------------- --- MAIN GATES ---------------------------------------------- --- Common 7-chevron addresses for main destinations - -addresses.MainGates = { - { "OVERWORLD", { 27, 25, 4, 35, 10, 28, 0 } }, - { "Nether", { 27, 23, 4, 34, 12, 28, 0 } }, - { "End", { 13, 24, 2, 19, 3, 30, 0 } }, - { "Abydos", { 26, 6, 14, 31, 11, 29, 0 } }, - { "Chulak", { 8, 1, 22, 14, 36, 19, 0 } }, - { "Unitas", { 2, 27, 8, 34, 24, 15, 0 } }, - { "Lantea", { 18, 20, 1, 15, 14, 7, 19, 0 } }, - { "Rima", { 33, 20, 10, 22, 3, 17, 0 } }, - { "Athos", { 18, 21, 14, 24, 1, 26, 28, 0 } } -} - ---------------------------------------------- --- PLAYER GATES ---------------------------------------------- --- Typically 9-chevron addresses for player bases - -addresses.playerGates = { - { "Glaive", { 33, 6, 10, 24, 1, 30, 3, 17, 0 } }, - { "Mune", { 32, 33, 8, 7, 25, 21, 14, 35, 0 } }, - --{ "Caldoric", { 18, 2, 24, 16, 8, 19, 4, 29, 0 } }, - { "Trading Hall", { 16, 19, 6, 18, 35, 27, 9, 8, 0 } }, - { "Darkmoon", { 29, 10, 3, 35, 11, 14, 16, 17, 0 } } -} - ---------------------------------------------- --- HAZARD GATES ---------------------------------------------- --- Dangerous destinations - -addresses.hazardGates = { - { "Cavum Tenebrae", { 18, 7, 3, 36, 25, 15, 0 }, "Weird Gravity" }, - { "Moon", { 33, 11, 17, 27, 12, 13, 3, 24, 0 }, "No Oxygen" } -} - -return addresses diff --git a/config.lua b/config.lua index 8f462d7..8adb709 100644 --- a/config.lua +++ b/config.lua @@ -85,4 +85,9 @@ config.logFile = "stargate.log" config.autoUpdate = true config.repoBaseUrl = "https://git.munebase.dev/Munelit/StargateControl/raw/branch/master/" +-- Address book server (determines which addresses.lua to use) +-- Options: "ATM9", "Custom", etc. +-- The file will be loaded from addresses//addresses.lua +config.addressBook = "ATM9" + return config diff --git a/install.lua b/install.lua index d42ec9f..57283a2 100644 --- a/install.lua +++ b/install.lua @@ -5,17 +5,10 @@ local baseUrl = "https://git.munebase.dev/Munelit/StargateControl/raw/branch/master/" -local files = { - -- Core files (always download) - "startup.lua", - "addresses.lua", - "utils.lua", - "display.lua", - "events.lua", - "handlers.lua", - - -- Config file (only download if doesn't exist) - config = "config.lua" +-- Available address book servers +local addressBooks = { + "ATM9" + -- Add more servers here as they become available } local function downloadFile(filename, url) @@ -60,11 +53,40 @@ if not http then return end +-- Select address book +print("Available address books:") +for i, book in ipairs(addressBooks) do + print(" " .. i .. ". " .. book) +end +print("") +print("Which address book would you like to use?") +write("Enter number (default 1): ") +local choice = tonumber(read()) or 1 + +if choice < 1 or choice > #addressBooks then + print("Invalid choice, using ATM9") + choice = 1 +end + +local selectedAddressBook = addressBooks[choice] +print("Selected: " .. selectedAddressBook) +print("") + local success = 0 local failed = 0 +-- Core files to download +local coreFiles = { + "startup.lua", + "utils.lua", + "display.lua", + "events.lua", + "handlers.lua" +} + -- Download core files -for _, filename in ipairs(files) do +print("Downloading core files...") +for _, filename in ipairs(coreFiles) do local url = baseUrl .. filename if downloadFile(filename, url) then success = success + 1 @@ -74,6 +96,7 @@ for _, filename in ipairs(files) do end -- Download config file only if it doesn't exist +print("") if fs.exists("config.lua") then print("Config file already exists - skipping") print(" [SKIP] config.lua") @@ -86,6 +109,40 @@ else end end +-- Download addresses.lua from server-specific folder +print("") +print("Downloading addresses for " .. selectedAddressBook .. "...") +local addressUrl = baseUrl .. "addresses/" .. selectedAddressBook .. "/addresses.lua" +if downloadFile("addresses.lua", addressUrl) then + success = success + 1 +else + failed = failed + 1 +end + +-- Update config with selected address book +print("") +print("Configuring address book setting...") +if fs.exists("config.lua") then + local file = fs.open("config.lua", "r") + if file then + local content = file.readAll() + file.close() + + -- Update addressBook line + content = content:gsub( + 'config%.addressBook%s*=%s*"[^"]*"', + 'config.addressBook = "' .. selectedAddressBook .. '"' + ) + + file = fs.open("config.lua", "w") + if file then + file.write(content) + file.close() + print(" [OK] Address book set to: " .. selectedAddressBook) + end + end +end + print("") print("========================================") print("Installation complete!") @@ -100,8 +157,10 @@ if failed > 0 then else print("All files downloaded successfully!") print("") - print("To start the program, run: startup") + print("The system will start automatically.") + print("To change settings, edit config.lua") print("") - print("Note: You may need to configure config.lua") - print("with your specific settings before running.") + print("Rebooting in 3 seconds...") + sleep(3) + os.reboot() end diff --git a/startup.lua b/startup.lua index dca1014..ac4c657 100644 --- a/startup.lua +++ b/startup.lua @@ -36,7 +36,6 @@ local function autoUpdate() local filesToUpdate = { "startup.lua", - "addresses.lua", "utils.lua", "display.lua", "events.lua", @@ -90,6 +89,47 @@ local function autoUpdate() end end + -- Update addresses.lua from server-specific folder + if config.addressBook then + local addressUrl = config.repoBaseUrl .. "addresses/" .. config.addressBook .. "/addresses.lua" + local response = http.get(addressUrl) + + if response then + local newContent = response.readAll() + response.close() + + local needsUpdate = true + if fs.exists("addresses.lua") then + local file = fs.open("addresses.lua", "r") + if file then + local currentContent = file.readAll() + file.close() + if currentContent == newContent then + needsUpdate = false + print(" [SKIP] addresses.lua (unchanged)") + end + end + end + + if needsUpdate then + if fs.exists("addresses.lua") then + fs.delete("addresses.lua") + end + local file = fs.open("addresses.lua", "w") + if file then + file.write(newContent) + file.close() + print(" [UPDATE] addresses.lua (" .. config.addressBook .. ")") + updated = true + else + print(" [FAIL] Could not write addresses.lua") + end + end + else + print(" [SKIP] Could not download addresses.lua for " .. config.addressBook) + end + end + return updated end