summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarel Kočí <karel.koci@nic.cz>2019-01-29 10:47:46 +0100
committerKarel Kočí <karel.koci@nic.cz>2019-01-29 10:47:46 +0100
commitc607772f8cfc500a6aac0fd8b2737e13622d13ed (patch)
tree4bb64dfecc1d3d904f71c0f74979595c5f2725b8
parent25e86d453453ffadc4f4ec75d701d43b4da20987 (diff)
downloadopenwrt-personal-pkgs-c607772f8cfc500a6aac0fd8b2737e13622d13ed.tar.gz
openwrt-personal-pkgs-c607772f8cfc500a6aac0fd8b2737e13622d13ed.tar.bz2
openwrt-personal-pkgs-c607772f8cfc500a6aac0fd8b2737e13622d13ed.zip
updater-ng: update turris.lua to be same as in upstream
-rw-r--r--updater-ng/files/base.lua93
-rw-r--r--updater-ng/files/turris.lua90
-rwxr-xr-xupdater-ng/files/updater-wipe.sh4
3 files changed, 42 insertions, 145 deletions
diff --git a/updater-ng/files/base.lua b/updater-ng/files/base.lua
deleted file mode 100644
index 1b5e9f3..0000000
--- a/updater-ng/files/base.lua
+++ /dev/null
@@ -1,93 +0,0 @@
---[[
-This file is part of updater-ng. Don't edit it.
-]]
-
-local branch = ""
-local lists
-local datacollection_enabled = false
-if uci then
- local cursor = uci.cursor()
- branch = cursor:get("updater", "override", "branch")
- if branch then
- WARN("Branch overriden to " .. branch)
- branch = "-" .. branch
- else
- branch = ""
- end
- lists = cursor:get("updater", "pkglists", "lists")
- -- TODO this can also be for example yes but this should work in default
- datacollection_enabled = cursor:get("foris", "eula", "agreed_collect") == '1'
-else
- ERROR("UCI library is not available. Not processing user lists.")
-end
-
--- Verify contract
-if not datacollection_enabled then
- local contract_valid = io.open('/usr/share/server-uplink/contract_valid', 'r')
- if not contract_valid then -- Try to generate it
- os.execute('/usr/share/server-uplink/contract_valid.sh')
- contract_valid = io.open('/usr/share/server-uplink/contract_valid', 'r')
- end
- if contract_valid then
- local contract_content = contract_valid:read()
- datacollection_enabled = contract_content == 'valid'
- contract_valid:close()
- else
- WARN("Contract wasn't verified")
- -- For Turris 1.x expect in default valid contract
- datacollection_enabled = model:match("^[Tt]urris$")
- end
-end
-
--- Guess what board this is.
-local base_model = ""
-if model then
- if model:match("Turris Mox") then
- base_model = "mox"
- elseif model:match("[Oo]mnia") then
- base_model = "omnia"
- elseif model:match("[Tt]urris") then
- base_model = "turris"
- end
-end
-
--- Definitions common url base
-local base_url = "https://repo.turris.cz/" .. base_model .. branch .. "/lists/"
--- Reused options for remotely fetched scripts
-local script_options = {
- security = "Remote",
- ca = system_cas,
- crl = no_crl,
- pubkey = {
- "file:///etc/updater/keys/release.pub",
- "file:///etc/updater/keys/standby.pub",
- "file:///etc/updater/keys/test.pub" -- It is normal for this one to not be present in production systems
- }
-}
-
--- The distribution base script. It contains the repository and bunch of basic packages
-Script("base", base_url .. "base.lua", script_options)
-
--- Data collection list
-if datacollection_enabled then
- Script("base", base_url .. "i_agree_datacollect.lua", script_options)
-end
-
--- Additional enabled distribution lists
-if lists then
- if type(lists) == "string" then -- if there is single list then uci returns just a string
- lists = {lists}
- end
- -- Go through user lists and pull them in.
- local exec_list = {} -- We want to run userlist only once even if it's defined multiple times
- if type(lists) == "table" then
- for _, l in ipairs(lists) do
- if exec_list[l] then
- WARN("User list " .. l .. " specified multiple times")
- else
- Script("userlist-" .. l, base_url .. l .. ".lua", script_options)
- exec_list[l] = true
- end
- end
- end
-end
diff --git a/updater-ng/files/turris.lua b/updater-ng/files/turris.lua
index 5559507..e3dc02b 100644
--- a/updater-ng/files/turris.lua
+++ b/updater-ng/files/turris.lua
@@ -2,40 +2,47 @@
This file is part of updater-ng. Don't edit it.
]]
-local branch = "hbs"
-local lists
-local datacollection_enabled = false
+local uci_cursor = nil
if uci then
- local cursor = uci.cursor()
- uci_branch = cursor:get("updater", "override", "branch")
- if uci_branch then
- WARN("Branch overriden to " .. uci_branch)
- branch = uci_branch
- end
- lists = cursor:get("updater", "pkglists", "lists")
- -- TODO this can also be for example yes but this should work in default
- datacollection_enabled = cursor:get("foris", "eula", "agreed_collect") == '1'
+ uci_cursor = uci.cursor()
else
ERROR("UCI library is not available. Configuration not used.")
end
+local function uci_cnf(name, default)
+ if uci_cursor then
+ return uci_cursor:get("updater", "turris", name) or default
+ else
+ return default
+ end
+end
--- TODO Turris 1.x contract? Or should we drop it.
+-- Configuration variables
+local mode = uci_cnf("mode", "branch") -- should we follow branch or version?
+local branch = uci_cnf("branch", "hbs") -- which branch to follow
+local version = uci_cnf("version", nil) -- which version to follow
+local lists = uci_cnf("lists", {}) -- what additional lists should we use
--- Guess what board this is.
-local base_model = ""
-if model then
- if model:match("Turris Mox") then
- base_model = "mox"
- elseif model:match("[Oo]mnia") then
- base_model = "omnia"
- elseif model:match("[Tt]urris") then
- base_model = "turris"
- end
+-- Verify that we have sensible configuration
+if type(lists) == "string" then -- if there is single list then uci returns just a string
+ lists = {lists}
+end
+if mode == "version" and not version then
+ WARN("Mode configured to be 'version' but no version provided. Changing mode to 'branch' instead.")
+ mode = "branch"
+end
+
+-- Common URL base to Turris OS repository
+local repo_base_uri
+if mode == "branch" then
+ repo_base_uri = "https://repo.turris.cz/" .. branch
+elseif mode == "version" then
+ repo_base_uri = "https://repo.turris.cz/archive/" .. version
+else
+ DIE("Invalid updater.turris.mode specified: " .. mode)
end
+Export('repo_base_uri')
--- Definitions common url base
-local base_url = "https://repo.turris.cz/" .. base_model .. '-' .. branch .. "/lists/"
--- Reused options for remotely fetched scripts
+-- Common connection settings for Turris OS scripts
local script_options = {
security = "Remote",
ca = system_cas,
@@ -47,30 +54,17 @@ local script_options = {
}
}
+local base_uri = repo_base_uri .. "/lists/"
-- The distribution base script. It contains the repository and bunch of basic packages
-Script("base", base_url .. "base.lua", script_options)
-
--- Data collection list
-if datacollection_enabled then
- Script("base", base_url .. "i_agree_datacollect.lua", script_options)
-end
+Script(base_url .. "base.lua", script_options)
-- Additional enabled distribution lists
-if lists then
- if type(lists) == "string" then -- if there is single list then uci returns just a string
- lists = {lists}
- end
- -- Go through user lists and pull them in.
- local exec_list = {} -- We want to run userlist only once even if it's defined multiple times
- if type(lists) == "table" then
- for _, l in ipairs(lists) do
- if exec_list[l] then
- WARN("User list " .. l .. " specified multiple times")
- else
- Script("userlist-" .. l, base_url .. l .. ".lua", script_options)
- exec_list[l] = true
- end
- end
+local exec_list = {} -- We want to run userlist only once even if it's defined multiple times
+for _, l in ipairs(lists) do
+ if exec_list[l] then
+ WARN("Turris package list '" .. l .. "' specified multiple times")
+ else
+ Script(base_url .. l .. ".lua", script_options)
+ exec_list[l] = true
end
end
-
diff --git a/updater-ng/files/updater-wipe.sh b/updater-ng/files/updater-wipe.sh
deleted file mode 100755
index 7bd6ba8..0000000
--- a/updater-ng/files/updater-wipe.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-# Empty...
-# This file exists only for backward compatibility with Foris wizard and nuci.
-# With Foris wizard removal we should drop this.