From b8d3156b538b98d71aa749c6873439bcbb187a5e Mon Sep 17 00:00:00 2001 From: Jade Ellis Date: Mon, 16 Dec 2024 02:12:43 +0000 Subject: [PATCH] Generate config --- servers/ansible/playbook.yaml | 5 +- servers/element-web/config.js | 46 +++++++++++ servers/element-web/config.json | 3 - .../config.element.ellis.link.json | 0 .../config.element.pissing.dev.json | 2 +- servers/element-web/public/config.json | 76 +++++++++++++++++++ servers/element-web/servers.json | 12 +++ 7 files changed, 139 insertions(+), 5 deletions(-) create mode 100644 servers/element-web/config.js rename servers/element-web/{ => public}/config.element.ellis.link.json (100%) rename servers/element-web/{ => public}/config.element.pissing.dev.json (100%) create mode 100644 servers/element-web/public/config.json create mode 100644 servers/element-web/servers.json diff --git a/servers/ansible/playbook.yaml b/servers/ansible/playbook.yaml index 81a0fe97..d7283fa5 100644 --- a/servers/ansible/playbook.yaml +++ b/servers/ansible/playbook.yaml @@ -67,9 +67,12 @@ file: path: /var/opt/kanidm_data state: directory + # - name: Generate Element Web config + # # run on localhost + # local_action: ansible.builtin.command cd ../element-web && node config.js - name: Copy Element Web config ansible.posix.synchronize: - src: ../element-web/ + src: ../element-web/public/ dest: /etc/element-web - name: Copy homepage config ansible.posix.synchronize: diff --git a/servers/element-web/config.js b/servers/element-web/config.js new file mode 100644 index 00000000..f85d0a66 --- /dev/null +++ b/servers/element-web/config.js @@ -0,0 +1,46 @@ +import fs from 'node:fs'; +// Read base config +const baseConfig = JSON.parse(fs.readFileSync('./config.json', 'utf8')); +// Server list +const servers = JSON.parse(fs.readFileSync('./servers.json', 'utf8')); +// Default server config +const defaultServerConfig = "element.ellis.link"; +const defaultConfigPath = './public/config.json'; + +// biome-ignore lint/complexity/noForEach: +Object.keys(servers).forEach(server => { + // Get server config + const serverConfig = servers[server]; + // Create overridden config + const overriddenConfig = { + ...baseConfig, + default_server_name: serverConfig.serverName, + default_server_config: { + ...baseConfig?.default_server_config, + "m.homeserver": { + ...baseConfig.default_server_config["m.homeserver"], + base_url: serverConfig.baseUrl + }, + "org.matrix.msc3575.proxy": { + ...baseConfig.default_server_config["org.matrix.msc3575.proxy"], + url: serverConfig.baseUrl + } + }, + room_directory: { + ...baseConfig.room_directory, + servers: [ + serverConfig.serverName, + ...baseConfig.room_directory.servers.filter(s => s !== serverConfig.serverName) + ] + } + }; + // Write config + const configPath = `./public/config.${server}.json`; + console.log(`Writing config to ${configPath}`); + fs.writeFileSync(configPath, JSON.stringify(overriddenConfig, null, 4)); + // write default config + if (server === defaultServerConfig) { + console.log(`Writing default config to ${defaultConfigPath}`); + fs.writeFileSync(defaultConfigPath, JSON.stringify(overriddenConfig, null, 4)); + } +}); diff --git a/servers/element-web/config.json b/servers/element-web/config.json index eb3bd8c0..a174da00 100644 --- a/servers/element-web/config.json +++ b/servers/element-web/config.json @@ -1,11 +1,8 @@ { - "default_server_name": "ellis.link", "default_server_config": { "m.homeserver": { - "base_url": "https://matrix.ellis.link/" }, "org.matrix.msc3575.proxy": { - "url": "https://matrix.ellis.link/" }, "m.identity_server": { "base_url": "https://vector.im" diff --git a/servers/element-web/config.element.ellis.link.json b/servers/element-web/public/config.element.ellis.link.json similarity index 100% rename from servers/element-web/config.element.ellis.link.json rename to servers/element-web/public/config.element.ellis.link.json diff --git a/servers/element-web/config.element.pissing.dev.json b/servers/element-web/public/config.element.pissing.dev.json similarity index 100% rename from servers/element-web/config.element.pissing.dev.json rename to servers/element-web/public/config.element.pissing.dev.json index ab89cb6c..b1982165 100644 --- a/servers/element-web/config.element.pissing.dev.json +++ b/servers/element-web/public/config.element.pissing.dev.json @@ -26,8 +26,8 @@ "show_labs_settings": true, "room_directory": { "servers": [ - "ellis.link", "pissing.dev", + "ellis.link", "matrix.org", "mozilla.org", "maunium.net", diff --git a/servers/element-web/public/config.json b/servers/element-web/public/config.json new file mode 100644 index 00000000..eb3bd8c0 --- /dev/null +++ b/servers/element-web/public/config.json @@ -0,0 +1,76 @@ +{ + "default_server_name": "ellis.link", + "default_server_config": { + "m.homeserver": { + "base_url": "https://matrix.ellis.link/" + }, + "org.matrix.msc3575.proxy": { + "url": "https://matrix.ellis.link/" + }, + "m.identity_server": { + "base_url": "https://vector.im" + } + }, + "brand": "Element", + "integrations_ui_url": "https://scalar.vector.im/", + "integrations_rest_url": "https://scalar.vector.im/api", + "integrations_widgets_urls": [ + "https://scalar.vector.im/_matrix/integrations/v1", + "https://scalar.vector.im/api", + "https://scalar-staging.vector.im/_matrix/integrations/v1", + "https://scalar-staging.vector.im/api", + "https://scalar-staging.riot.im/scalar/api" + ], + "bug_report_endpoint_url": "https://element.io/bugreports/submit", + "uisi_autorageshake_app": "element-auto-uisi", + "show_labs_settings": true, + "room_directory": { + "servers": [ + "ellis.link", + "pissing.dev", + "matrix.org", + "mozilla.org", + "maunium.net", + "gitter.im", + "kde.org", + "libera.chat", + "schildi.chat", + "raim.ist" + ] + }, + "enable_presence_by_hs_url": { + "https://matrix.org": false, + "https://matrix-client.matrix.org": false, + "https://matrix.ellis.link": true, + "https://ellis.link": true, + "https://matrix.pissing.dev": true, + "https://pissing.dev": true + }, + "terms_and_conditions_links": [ + { + "url": "https://element.io/privacy", + "text": "Privacy Policy (Element)" + }, + { + "url": "https://element.io/cookie-policy", + "text": "Cookie Policy (Element)" + } + ], + "features": { + "threadsActivityCentre": true, + "feature_video_rooms": true, + "feature_group_calls": true, + "feature_element_call_video_rooms": true, + "feature_latex_maths": true, + "feature_bridge_state": true, + "feature_render_reaction_images": true + }, + "setting_defaults": { + "RustCrypto.staged_rollout_percent": 100, + "Registration.mobileRegistrationHelper": true + }, + "element_call": { + "url": "https://call.element.dev" + }, + "map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx" +} \ No newline at end of file diff --git a/servers/element-web/servers.json b/servers/element-web/servers.json new file mode 100644 index 00000000..c8c3a913 --- /dev/null +++ b/servers/element-web/servers.json @@ -0,0 +1,12 @@ +{ + "element.ellis.link": { + "elementUrl": "https://element.ellis.link/", + "baseUrl": "https://matrix.ellis.link/", + "serverName": "ellis.link" + }, + "element.pissing.dev": { + "elementUrl": "https://element.pissing.dev/", + "baseUrl": "https://matrix.pissing.dev/", + "serverName": "pissing.dev" + } +} \ No newline at end of file