Add multi-server support for the repo/installer
This commit is contained in:
@ -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
|
||||
@ -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
|
||||
|
||||
89
install.lua
89
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
|
||||
|
||||
42
startup.lua
42
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user