From d223f35731063a43d2a71b023f071016c3ec52e6 Mon Sep 17 00:00:00 2001 From: nallux-dozryl Date: Tue, 20 Dec 2022 02:07:37 +0800 Subject: [PATCH 1/3] beta-3.5.2-edge --- api/groundseg.py | 41 +++++++- api/orchestrator.py | 37 +++++++- api/webui_docker.py | 2 +- release/version_edge.csv | 1 + ui/src/lib/AnchorButton.svelte | 3 +- ui/src/lib/SettingsButton.svelte | 3 +- ui/src/lib/SetupAnchor.svelte | 124 ++++++++++++++++++++++++ ui/src/lib/SetupPassword.svelte | 126 +++++++++++++++++++++++++ ui/src/lib/api.js | 2 +- ui/src/routes/(home)/+page.server.js | 2 +- ui/src/routes/(home)/+page.svelte | 6 ++ ui/src/routes/[patp]/+page.server.js | 2 +- ui/src/routes/[patp]/+page.svelte | 5 + ui/src/routes/settings/+page.server.js | 2 +- ui/src/routes/settings/+page.svelte | 5 + ui/src/routes/setup/+page.server.js | 23 +++++ ui/src/routes/setup/+page.svelte | 41 ++++++++ ui/src/routes/startram/+page.server.js | 2 +- ui/src/routes/startram/+page.svelte | 5 + 19 files changed, 416 insertions(+), 16 deletions(-) create mode 100644 ui/src/lib/SetupAnchor.svelte create mode 100644 ui/src/lib/SetupPassword.svelte create mode 100644 ui/src/routes/setup/+page.server.js create mode 100644 ui/src/routes/setup/+page.svelte diff --git a/api/groundseg.py b/api/groundseg.py index 887f7b88..0017a15d 100755 --- a/api/groundseg.py +++ b/api/groundseg.py @@ -162,10 +162,11 @@ def meld_loop(): time.sleep(30) -threading.Thread(target=check_bin_updates).start() # Start binary updater thread -threading.Thread(target=sys_monitor).start() # Start system monitoring on a new thread -threading.Thread(target=meld_loop).start() # Start meld loop on a new thread -threading.Thread(target=anchor_information).start() # Start anchor information loop on a new thread +# Threads +threading.Thread(target=check_bin_updates).start() # Binary updater +threading.Thread(target=sys_monitor).start() # System monitoring +threading.Thread(target=meld_loop).start() # Meld loop +threading.Thread(target=anchor_information).start() # Anchor information # # Endpoints @@ -174,6 +175,9 @@ def meld_loop(): # Check if cookie is valid @app.route("/cookies", methods=['GET']) def check_cookies(): + if orchestrator.config['firstBoot']: + return jsonify('setup') + sessionid = request.args.get('sessionid') if sessionid in orchestrator.config['sessions']: @@ -184,6 +188,9 @@ def check_cookies(): # Get all urbits @app.route("/urbits", methods=['GET']) def all_urbits(): + if orchestrator.config['firstBoot']: + return jsonify('setup') + sessionid = request.args.get('sessionid') if len(str(sessionid)) != 64: @@ -203,6 +210,9 @@ def all_urbits(): # Handle urbit ID related requests @app.route('/urbit', methods=['GET','POST']) def urbit_info(): + if orchestrator.config['firstBoot']: + return jsonify('setup') + urbit_id = request.args.get('urbit_id') sessionid = request.args.get('sessionid') @@ -227,6 +237,9 @@ def urbit_info(): # Handle device's system settings @app.route("/system", methods=['GET','POST']) def system_settings(): + if orchestrator.config['firstBoot']: + return jsonify('setup') + sessionid = request.args.get('sessionid') if len(str(sessionid)) != 64: @@ -251,6 +264,9 @@ def system_settings(): # Handle anchor registration related information @app.route("/anchor", methods=['GET']) def anchor_settings(): + if orchestrator.config['firstBoot']: + return jsonify('setup') + sessionid = request.args.get('sessionid') if len(str(sessionid)) != 64: @@ -270,6 +286,9 @@ def anchor_settings(): # Pier upload @app.route("/upload", methods=['POST']) def pier_upload(): + if orchestrator.config['firstBoot']: + return jsonify('setup') + sessionid = request.args.get('sessionid') if len(str(sessionid)) != 64: @@ -339,6 +358,9 @@ def pier_upload(): # Login @app.route("/login", methods=['POST']) def login(): + if orchestrator.config['firstBoot']: + return jsonify('setup') + res = orchestrator.handle_login_request(request.get_json()) if res == 200: res = make_response(jsonify(res)) @@ -348,6 +370,17 @@ def login(): return res +# Setup +@app.route("/setup", methods=['POST']) +def setup(): + if not orchestrator.config['firstBoot']: + return jsonify(400) + + page = request.args.get('page') + + res = orchestrator.handle_setup(page, request.get_json()) + + return jsonify(res) if __name__ == '__main__': debug_mode = False diff --git a/api/orchestrator.py b/api/orchestrator.py index 843109e5..2bbe22a1 100755 --- a/api/orchestrator.py +++ b/api/orchestrator.py @@ -41,7 +41,7 @@ class Orchestrator: _disk = None # GroundSeg - gs_version = 'Beta-3.5.1' + gs_version = 'Beta-3.5.2-edge' anchor_config = {'lease': None,'ongoing': None} minIO_on = False config = {} @@ -67,8 +67,9 @@ def __init__(self, config_file): # if first boot, set up keys if self.config['firstBoot']: + Log.log_groundseg("GroundSeg is in setup mode") self.reset_pubkey() - self.config['firstBoot'] = False + #self.config['firstBoot'] = False # save the latest config to file self.save_config() @@ -201,6 +202,38 @@ def load_urbits(self): Log.log_groundseg("Urbit Piers loaded") +# +# Setup +# + + def handle_setup(self, page, data): + try: + if page == "anchor": + # set endpoint + changed = self.change_wireguard_url(data['endpoint']) + + # register key + if changed == 200: + registered = self.register_device(data['key']) + + if registered == 400: + return 401 + + return registered + + + if page == "password": + self.create_password(data['password']) + self.config['firstBoot'] = False + return 200 + + except Exception as e: + Log.log_groundseg(e) + pass + + return 401 + + # # Login # diff --git a/api/webui_docker.py b/api/webui_docker.py index c7918175..a64e0d96 100644 --- a/api/webui_docker.py +++ b/api/webui_docker.py @@ -6,7 +6,7 @@ client = docker.from_env() class WebUIDocker: - _webui_img = "nativeplanet/groundseg-webui:latest" + _webui_img = "nativeplanet/groundseg-webui:edge" def __init__(self,port): client.images.pull(self._webui_img) diff --git a/release/version_edge.csv b/release/version_edge.csv index 6f83e670..55d13b80 100644 --- a/release/version_edge.csv +++ b/release/version_edge.csv @@ -1,3 +1,4 @@ +Beta-3.5.2-edge,2227a08abc4fd405a866858b87e0dc4f4777956a659033e2199ea7ce3139f064,https://github.com/Native-Planet/GroundSeg/releases/download/beta-3.5.2-edge/groundseg Beta-3.5.1-edge,c8bd6bab5e57aadcd9c7fd7369e2845761d1446797455bbd30aa36a1fa799fef,https://github.com/Native-Planet/GroundSeg/releases/download/beta-3.5.1-edge/groundseg Beta-3.5.0-edge,43429e4b06016fe1c57d3bd23a41bbf546dac292b6bc6937ae34015a9164def1,https://github.com/Native-Planet/GroundSeg/releases/download/beta-3.5.0-edge/groundseg Beta-3.4.0-edge,6edf1bac09c511986d2ade2f336eee4d4c24651f2fc25e386a9b071a8264b172,https://github.com/Native-Planet/GroundSeg/releases/download/beta-3.4.0-edge/groundseg diff --git a/ui/src/lib/AnchorButton.svelte b/ui/src/lib/AnchorButton.svelte index fe87830f..4611bfa5 100644 --- a/ui/src/lib/AnchorButton.svelte +++ b/ui/src/lib/AnchorButton.svelte @@ -51,9 +51,8 @@ diff --git a/ui/src/lib/SetupPassword.svelte b/ui/src/lib/SetupPassword.svelte new file mode 100644 index 00000000..a6992203 --- /dev/null +++ b/ui/src/lib/SetupPassword.svelte @@ -0,0 +1,126 @@ + + +
Create New Password
+ +
+ + eye +
+ +{#if password.length > 0} +
+ + eye +
+{/if} + +
+ dispatch('prevPage')} + /> + + {#if ((confirmPassword.length > 0) && (password == confirmPassword))} + + {/if} +
+ + diff --git a/ui/src/lib/api.js b/ui/src/lib/api.js index 8acb33a9..f17e8e5e 100644 --- a/ui/src/lib/api.js +++ b/ui/src/lib/api.js @@ -1,6 +1,6 @@ import { writable } from 'svelte/store' -export const webuiVersion = 'Beta-3.5.1' +export const webuiVersion = 'Beta-3.5.2-edge' // // fade transition params diff --git a/ui/src/routes/(home)/+page.server.js b/ui/src/routes/(home)/+page.server.js index ea71d514..1f437237 100644 --- a/ui/src/routes/(home)/+page.server.js +++ b/ui/src/routes/(home)/+page.server.js @@ -11,7 +11,7 @@ export function load({ cookies }) { let d = fetch(query) .then(j => j.json()) .then(r => { - if (r == 404) {return {status:r}} + if ((r == 404) || (r == 'setup')) {return {status:r}} else {return r} }) .catch(err => { diff --git a/ui/src/routes/(home)/+page.svelte b/ui/src/routes/(home)/+page.svelte index e0e45f21..f2287dcc 100644 --- a/ui/src/routes/(home)/+page.svelte +++ b/ui/src/routes/(home)/+page.svelte @@ -32,10 +32,16 @@ // Start the update loop onMount(()=> { + console.log(data) api.set("http://" + $page.url.hostname + ":27016") if (data['status'] == 404) { window.location.href = "/login" } + + if (data['status'] == 'setup') { + window.location.href = "/setup" + } + inView = true update() }) diff --git a/ui/src/routes/[patp]/+page.server.js b/ui/src/routes/[patp]/+page.server.js index e0f6991d..5bad5098 100644 --- a/ui/src/routes/[patp]/+page.server.js +++ b/ui/src/routes/[patp]/+page.server.js @@ -12,7 +12,7 @@ export function load({ cookies }) { let d = fetch(query, {credentials:"include"}) .then(j => j.json()) .then(r => { - if (r == 404) {return {api:url,status:r}} + if ((r == 404) || (r == 'setup')) {return {status:r}} else {return {api:url}} }) .catch(err => { diff --git a/ui/src/routes/[patp]/+page.svelte b/ui/src/routes/[patp]/+page.svelte index 9f9a5521..9ecee273 100644 --- a/ui/src/routes/[patp]/+page.svelte +++ b/ui/src/routes/[patp]/+page.svelte @@ -38,6 +38,11 @@ if (data['status'] == 404) { window.location.href = "/login" } + + if (data['status'] == 'setup') { + window.location.href = "/setup" + } + update() getUrbitCode() }) diff --git a/ui/src/routes/settings/+page.server.js b/ui/src/routes/settings/+page.server.js index 20d65554..0f1fb279 100644 --- a/ui/src/routes/settings/+page.server.js +++ b/ui/src/routes/settings/+page.server.js @@ -12,7 +12,7 @@ export function load({ cookies }) { let d = fetch(query, {credentials:"include"}) .then(j => j.json()) .then(r => { - if (r == 404) {return {api:url,status:r}} + if ((r == 404) || (r == 'setup')) {return {status:r}} else {r['api'] = url; return r} }) .catch(err => { diff --git a/ui/src/routes/settings/+page.svelte b/ui/src/routes/settings/+page.svelte index f4e993f6..251d76d9 100644 --- a/ui/src/routes/settings/+page.svelte +++ b/ui/src/routes/settings/+page.svelte @@ -70,6 +70,11 @@ if (data['status'] == 404) { window.location.href = "/login" } + + if (data['status'] == 'setup') { + window.location.href = "/setup" + } + update() inViewSettings = true selectedContainer = $system.containers[0] diff --git a/ui/src/routes/setup/+page.server.js b/ui/src/routes/setup/+page.server.js new file mode 100644 index 00000000..a1afdc38 --- /dev/null +++ b/ui/src/routes/setup/+page.server.js @@ -0,0 +1,23 @@ +/** @type {import('./$types').PageServerLoad} */ +import { env } from '$env/dynamic/private' + +export const prerender = false; + +export function load({ cookies }) { + const sessionid = cookies.get('sessionid'); + + let query = 'http://127.0.0.1:27016/cookies?sessionid=' + sessionid + + let d = fetch(query) + .then(j => j.json()) + .then(r => {return {status:r}}) + .catch(err => { + console.log(err) + if ((typeof err) == 'object') { + err = 'noconn' + } + return {status:err} + }) + + return d +} diff --git a/ui/src/routes/setup/+page.svelte b/ui/src/routes/setup/+page.svelte new file mode 100644 index 00000000..77eff4b3 --- /dev/null +++ b/ui/src/routes/setup/+page.svelte @@ -0,0 +1,41 @@ + + +{#if inViewSetup} + + + + {#if setupPage == 0} + setupPage = 1}/> + {/if} + + {#if setupPage == 1} + setupPage = 0} /> + {/if} + + +{/if} + + diff --git a/ui/src/routes/startram/+page.server.js b/ui/src/routes/startram/+page.server.js index 59d1d8b4..93b2585d 100644 --- a/ui/src/routes/startram/+page.server.js +++ b/ui/src/routes/startram/+page.server.js @@ -12,7 +12,7 @@ export function load({ cookies }) { let d = fetch(query, {credentials:"include"}) .then(j => j.json()) .then(r => { - if (r == 404) {return {api:url,status:r}} + if ((r == 404) || (r == 'setup')) {return {status:r}} else {r['api'] = url; return r} }) .catch(err => { diff --git a/ui/src/routes/startram/+page.svelte b/ui/src/routes/startram/+page.svelte index 12d5a7d1..82d08d24 100644 --- a/ui/src/routes/startram/+page.svelte +++ b/ui/src/routes/startram/+page.svelte @@ -43,6 +43,11 @@ if (data['status'] == 404) { window.location.href = "/login" } + + if (data['status'] == 'setup') { + window.location.href = "/setup" + } + update() inView = true }) From c104496a237da72bd0d6d0a7c43dac3fbaf7cfcf Mon Sep 17 00:00:00 2001 From: nallux-dozryl Date: Tue, 20 Dec 2022 02:38:56 +0800 Subject: [PATCH 2/3] beta-3.5.2 --- api/orchestrator.py | 2 +- api/webui_docker.py | 2 +- release/version.csv | 1 + ui/src/lib/api.js | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/api/orchestrator.py b/api/orchestrator.py index 2bbe22a1..dd40bf6c 100755 --- a/api/orchestrator.py +++ b/api/orchestrator.py @@ -41,7 +41,7 @@ class Orchestrator: _disk = None # GroundSeg - gs_version = 'Beta-3.5.2-edge' + gs_version = 'Beta-3.5.2' anchor_config = {'lease': None,'ongoing': None} minIO_on = False config = {} diff --git a/api/webui_docker.py b/api/webui_docker.py index a64e0d96..c7918175 100644 --- a/api/webui_docker.py +++ b/api/webui_docker.py @@ -6,7 +6,7 @@ client = docker.from_env() class WebUIDocker: - _webui_img = "nativeplanet/groundseg-webui:edge" + _webui_img = "nativeplanet/groundseg-webui:latest" def __init__(self,port): client.images.pull(self._webui_img) diff --git a/release/version.csv b/release/version.csv index 5910bb7d..4d43f14d 100644 --- a/release/version.csv +++ b/release/version.csv @@ -1,3 +1,4 @@ +Beta-3.5.2,560601e21e4ec25cbef1542ca3dd20bd3697f6887e50db3e40252002d4093ede,https://github.com/Native-Planet/GroundSeg/releases/download/beta-3.5.2/groundseg Beta-3.5.1,0cce788b8c0f2325db516f3a7635ff82e07b880f15f4d54257552410e853ca63,https://github.com/Native-Planet/GroundSeg/releases/download/beta-3.5.1/groundseg Beta-3.5.0,79c4c71dfede94a2f0ea3d5331437872acb130664f1e9d492c127c2e13d16be1,https://github.com/Native-Planet/GroundSeg/releases/download/beta-3.5.0/groundseg Beta-3.4.0,eb1f6f327e160ad192fde4996791758ae711538ca966b0cd1f679fd7ebee5824,https://github.com/Native-Planet/GroundSeg/releases/download/beta-3.4.0/groundseg diff --git a/ui/src/lib/api.js b/ui/src/lib/api.js index f17e8e5e..f947c096 100644 --- a/ui/src/lib/api.js +++ b/ui/src/lib/api.js @@ -1,6 +1,6 @@ import { writable } from 'svelte/store' -export const webuiVersion = 'Beta-3.5.2-edge' +export const webuiVersion = 'Beta-3.5.2' // // fade transition params From 41b3bf73ccaaf4cb2ab1fe72d4ee30096374a62e Mon Sep 17 00:00:00 2001 From: nallux-dozryl Date: Tue, 20 Dec 2022 02:39:34 +0800 Subject: [PATCH 3/3] updated install script --- release/groundseg_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/groundseg_install.sh b/release/groundseg_install.sh index e12872cb..5027eeba 100755 --- a/release/groundseg_install.sh +++ b/release/groundseg_install.sh @@ -8,7 +8,7 @@ sudo firewall-cmd --reload ACC=Native-Planet REPO=GroundSeg BRANCH=main -TAG=beta-3.5.1 +TAG=beta-3.5.2 # Directory to save the scrips SAVE_DIR=/opt/nativeplanet/groundseg