Attempt of a version including user config overrides

This commit is contained in:
Florent 2021-09-12 20:03:12 +02:00 committed by Florent F
parent 20bec238c9
commit 42941e7ba5
9 changed files with 104 additions and 49 deletions

View file

@ -1,3 +1,7 @@
# /!\ WARNING: DO NOT EDIT THIS FILE /!\
# this file will be overridden anytime an upgrade or a restoration is performed
# Please, edit the __USER_CONFIG_PATH__ file instead
bridge: bridge:
# Port to host the bridge on # Port to host the bridge on
# Used for communication between the homeserver and the bridge # Used for communication between the homeserver and the bridge
@ -51,48 +55,6 @@ presence:
# How often to send status to the homeserver in milliseconds # How often to send status to the homeserver in milliseconds
interval: 500 interval: 500
provisioning:
# Regex of Matrix IDs allowed to use the puppet bridge
whitelist:
# Allow a specific user
#- "@user:server\\.com"
# Allow users on a specific homeserver
- "__ANY_ACCOUNT_OF_DOMAIN__"
# Allow anyone
#- ".*"
# Regex of Matrix IDs forbidden from using the puppet bridge
#blacklist:
# Disallow a specific user
#- "@user:server\\.com"
# Disallow users on a specific homeserver
#- "@.*:server\\.com"
relay:
# Regex of Matrix IDs who are allowed to use the bridge in relay mode.
# Relay mode is when a single Discord bot account relays messages of
# multiple Matrix users
#
# Same format as in provisioning
whitelist:
- "__ANY_ACCOUNT_OF_DOMAIN__"
#blacklist:
#- "@user:yourserver\\.com"
selfService:
# Regex of Matrix IDs who are allowed to use bridge self-servicing (plumbed rooms)
#
# Same format as in provisioning
whitelist:
- "__ANY_ACCOUNT_OF_DOMAIN__"
#blacklist:
#- "@user:server\\.com"
# Map of homeserver URLs to their C-S API endpoint # Map of homeserver URLs to their C-S API endpoint
# #
# Useful for double-puppeting if .well-known is unavailable for some reason # Useful for double-puppeting if .well-known is unavailable for some reason

View file

@ -9,7 +9,7 @@ Environment="__YNH_NODE_LOAD_PATH__"
User=__APP__ User=__APP__
Group=__APP__ Group=__APP__
WorkingDirectory=__FINALPATH__/ WorkingDirectory=__FINALPATH__/
ExecStart=__YNH_NPM__ start -- -f __FINALPATH__/__APP__.yaml ExecStart=__FINALPATH__/run.sh
StandardOutput=syslog StandardOutput=syslog
StandardError=syslog StandardError=syslog

47
conf/user.config.yaml Normal file
View file

@ -0,0 +1,47 @@
# You can edit this file.
# This will override the configuration contained in the __FINALPATH__/base.config.yaml file.
# Don't hesitate to take a look at __FINALPATH__/sample.config.yaml to see all the available options.
# Then, in order to take into account the changes, run: systemctl restart __APP__
provisioning:
# Regex of Matrix IDs allowed to use the puppet bridge
whitelist:
# Allow a specific user
#- "@user:server\\.com"
# Allow users on a specific homeserver
- "__ANY_ACCOUNT_OF_DOMAIN__"
# Allow anyone
#- ".*"
# Regex of Matrix IDs forbidden from using the puppet bridge
#blacklist:
# Disallow a specific user
#- "@user:server\\.com"
# Disallow users on a specific homeserver
#- "@.*:server\\.com"
relay:
# Regex of Matrix IDs who are allowed to use the bridge in relay mode.
# Relay mode is when a single Discord bot account relays messages of
# multiple Matrix users
#
# Same format as in provisioning
whitelist:
- "__ANY_ACCOUNT_OF_DOMAIN__"
#blacklist:
#- "@user:yourserver\\.com"
selfService:
# Regex of Matrix IDs who are allowed to use bridge self-servicing (plumbed rooms)
#
# Same format as in provisioning
whitelist:
- "__ANY_ACCOUNT_OF_DOMAIN__"
#blacklist:
#- "@user:server\\.com"

View file

@ -31,3 +31,15 @@ setup_final_path_rights() {
chmod -R o-rwx "$final_path" chmod -R o-rwx "$final_path"
chown -R $app:$app "$final_path" chown -R $app:$app "$final_path"
} }
setup_run_script_rights() {
chmod 750 "$final_path/run.sh"
chown "$app:$app" "$final_path/run.sh"
}
create_etc() {
local etc_path=$1
mkdir -p -m 750 "$etc_path"
chown "$app:$app" "$etc_path"
}

View file

@ -27,6 +27,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path)
domain=$(ynh_app_setting_get --app=$app --key=domain) domain=$(ynh_app_setting_get --app=$app --key=domain)
db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_name=$(ynh_app_setting_get --app=$app --key=db_name)
log_path=$(ynh_app_setting_get --app=$app --key=log_path) log_path=$(ynh_app_setting_get --app=$app --key=log_path)
etc_path=$(ynh_app_setting_get --app=$app --key=etc_path)
#================================================= #=================================================
# DECLARE DATA AND CONF FILES TO BACKUP # DECLARE DATA AND CONF FILES TO BACKUP
@ -55,6 +56,7 @@ ynh_backup --src_path="/etc/systemd/system/$app.service"
#================================================= #=================================================
ynh_backup --src_path="$log_path" ynh_backup --src_path="$log_path"
ynh_backup --src="$etc_path"
#================================================= #=================================================
# BACKUP THE POSTGRESQL DATABASE # BACKUP THE POSTGRESQL DATABASE

View file

@ -43,6 +43,8 @@ domain=$(ynh_app_setting_get --app $synapse_instance --key domain)
app_service_registration_path="/etc/matrix-$synapse_instance/app-service" app_service_registration_path="/etc/matrix-$synapse_instance/app-service"
log_path="/var/log/$app" log_path="/var/log/$app"
config_path="$final_path/config.yaml" config_path="$final_path/config.yaml"
base_config_path="$final_path/base.config.yaml"
user_config_path="/etc/$app/user.config.yaml"
ynh_print_OFF ynh_print_OFF
db_password=$(ynh_string_random --length=30) db_password=$(ynh_string_random --length=30)
@ -128,13 +130,27 @@ ynh_script_progression --message="Building Node dependencies..." --weight=30
install_node_deps install_node_deps
#================================================= #=================================================
# ADD A CONFIGURATION # SETUP PIP (FOR YQ)
#================================================= #=================================================
ynh_script_progression --message="Adding a configuration file..." --weight=1
pip_path=$final_path/.pip
python3 -m venv $pip_path
$pip_path/bin/pip3 install yq
#=================================================
# ADD CONFIGURATION FILES
#=================================================
ynh_script_progression --message="Adding configuration files..." --weight=1
etc_path=$(dirname $user_config_path)
ynh_app_setting_set --app=$app --key=etc_path --value=$etc_path
create_etc "$etc_path"
any_account_of_domain="@.*:${domain//\./\\\\\.}" any_account_of_domain="@.*:${domain//\./\\\\\.}"
# TODO Add a way to override the config.yaml file # TODO Add a way to override the config.yaml file
ynh_add_config --template="base.config.yaml" --destination="$config_path" ynh_add_config --template="base.config.yaml" --destination="$base_config_path"
ynh_add_config --template="user.config.yaml" --destination="$user_config_path"
chmod 400 "$config_path" chmod 400 "$config_path"
chown $app:$app "$config_path" chown $app:$app "$config_path"
@ -152,6 +168,10 @@ ynh_store_file_checksum --file="$config_path"
#================================================= #=================================================
ynh_script_progression --message="Configuring a systemd service..." --weight=1 ynh_script_progression --message="Configuring a systemd service..." --weight=1
# Create startup script
ynh_add_config --template="../sources/extra_files/app/run.sh" --destination="$final_path/run.sh"
setup_run_script_rights
# Create a dedicated systemd config # Create a dedicated systemd config
ynh_add_systemd_config ynh_add_systemd_config
@ -179,7 +199,6 @@ cp "$final_path/$app.yaml" $app_service_registration_path/$app.yaml
/opt/yunohost/matrix-$synapse_instance/update_synapse_for_appservice.sh \ /opt/yunohost/matrix-$synapse_instance/update_synapse_for_appservice.sh \
|| ynh_die "Synapse can't restart with the appservice configuration" || ynh_die "Synapse can't restart with the appservice configuration"
#================================================= #=================================================
# STORE THE CONFIG FILE CHECKSUM # STORE THE CONFIG FILE CHECKSUM
#================================================= #=================================================

View file

@ -94,6 +94,9 @@ log_path=$(ynh_app_setting_get --app=$app --key=log_path)
ynh_restore_file --origin_path="$log_path" ynh_restore_file --origin_path="$log_path"
chown $app:$app "$log_path" chown $app:$app "$log_path"
etc_path=$(ynh_app_setting_get --app=$app --key=etc_path)
ynh_restore_file --origin_path="$etc_path"
#================================================= #=================================================
# REGISTER SYNAPSE APP-SERVICE # REGISTER SYNAPSE APP-SERVICE
#================================================= #=================================================
@ -108,6 +111,8 @@ ynh_script_progression --message="Restoring the systemd configuration..." --weig
ynh_restore_file --origin_path="/etc/systemd/system/$app.service" ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
systemctl enable $app.service --quiet systemctl enable $app.service --quiet
setup_run_script_rights
#================================================= #=================================================
# INTEGRATE SERVICE IN YUNOHOST # INTEGRATE SERVICE IN YUNOHOST

View file

@ -0,0 +1,10 @@
#!/bin/bash
echo <<EOF > __CONFIG_PATH__
# /!\ FILE GENERATED AUTOMATICALLY BEFORE EACH SERVICE RESTART
# CONSIDER EDITING /etc/__APP__/user.config.yaml
EOF
__PIP_PATH__/bin/yq -y -s '.[0] * .[1]' __FINALPATH__/base.config.yaml /etc/__APP__/user.config.yaml > __CONFIG_PATH__
__YNH_NPM__ start -- -c __CONFIG_PATH__ -f __APP__.yaml

View file

@ -1,2 +0,0 @@
*~
*.sw[op]