Add multi-server support for the repo/installer

This commit is contained in:
2026-01-02 23:08:01 -05:00
parent 95b5ba401f
commit 94412549fb
4 changed files with 120 additions and 64 deletions

View File

@ -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

View File

@ -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/<server>/addresses.lua
config.addressBook = "ATM9"
return config

View File

@ -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

View File

@ -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