diff --git a/conf/ext_action-bar.src b/conf/ext_action-bar.src deleted file mode 100644 index 3f69304..0000000 --- a/conf/ext_action-bar.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/action-bar/archive/1.3.2.zip -SOURCE_SUM=35b03cc5be9b7d948016ca6f7de8e682361a810f884f6e2c0a71cb09100baba0 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_autobiography-theme.src b/conf/ext_autobiography-theme.src deleted file mode 100644 index 4d45396..0000000 --- a/conf/ext_autobiography-theme.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/autobiography-theme/archive/1.0.0.zip -SOURCE_SUM=cbc8e07fa7703bdf8b7c9c3ef30a6d87d4ade7e5eb58ce7a983a34f1199a819d -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_bold-editor.src b/conf/ext_bold-editor.src deleted file mode 100644 index 5f14968..0000000 --- a/conf/ext_bold-editor.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/bold-editor/archive/1.2.2.zip -SOURCE_SUM=2831f0fd4abed6562b860e558968388a398f691602a82795b10a13e897c3af2e -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_code-editor.src b/conf/ext_code-editor.src deleted file mode 100644 index f8bf502..0000000 --- a/conf/ext_code-editor.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/code-editor/archive/1.3.8.zip -SOURCE_SUM=085B3839F072601C704C3D97E180B66909A3EFA89B3D876298887D426C6315E4 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_dynamic-theme.src b/conf/ext_dynamic-theme.src deleted file mode 100644 index 59b8df5..0000000 --- a/conf/ext_dynamic-theme.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/dynamic-theme/archive/1.0.0.zip -SOURCE_SUM=2be90456a6d8e90b4c6c666c797b96c72935b41fde8aa2b29a219368ce100c99 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_focus-theme.src b/conf/ext_focus-theme.src deleted file mode 100644 index 664875e..0000000 --- a/conf/ext_focus-theme.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/focus-theme/archive/1.2.3.zip -SOURCE_SUM=371a48128bc0e95f2298053dc39c333454a2c11962a28e9a7749435da0e85340 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_folders-component.src b/conf/ext_folders-component.src deleted file mode 100644 index 09f12b1..0000000 --- a/conf/ext_folders-component.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/folders-component/archive/1.3.8.zip -SOURCE_SUM=ae30cf348466af90b05216a16f8094fd9f087979dced6b1b83a8ad5f26a924e3 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_futura-theme.src b/conf/ext_futura-theme.src deleted file mode 100644 index 2b7dd0f..0000000 --- a/conf/ext_futura-theme.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/futura-theme/archive/1.2.2.zip -SOURCE_SUM=900cebb84e2a794ca5cd6d62d28705e18181ae6cac76c2d8fa6d109a24386e94 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_github-push.src b/conf/ext_github-push.src deleted file mode 100644 index 70da57d..0000000 --- a/conf/ext_github-push.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/github-push/archive/1.2.4.zip -SOURCE_SUM=D902386F8E91E0DBAEE7763E9D6B2015B70426D1B91973F677DDAA63B5918574 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_markdown-basic.src b/conf/ext_markdown-basic.src deleted file mode 100644 index 68198ae..0000000 --- a/conf/ext_markdown-basic.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/markdown-basic/archive/1.4.0.zip -SOURCE_SUM=acfa7ea3974de9441381020c64e343303cbd7d27c30175ed3c047c17c6f98cad -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_markdown-pro.src b/conf/ext_markdown-pro.src deleted file mode 100644 index 5ce813d..0000000 --- a/conf/ext_markdown-pro.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/markdown-pro/archive/1.3.14.zip -SOURCE_SUM=0fe5d2a062fc780e417979605e779ee17bbe580ecfa936a45d8007d8ca6d3b0e -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_math-editor.src b/conf/ext_math-editor.src deleted file mode 100644 index 915b17d..0000000 --- a/conf/ext_math-editor.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/math-editor/archive/1.3.4.zip -SOURCE_SUM=e8e69f082231f3052185c1f74c7bacdbc26b75fe1047045da2cf22f4459d97bf -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_mfa-link.src b/conf/ext_mfa-link.src deleted file mode 100644 index 08edbd9..0000000 --- a/conf/ext_mfa-link.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/mfa-link/archive/1.2.5.zip -SOURCE_SUM=f5f5221fa3cf53bf5ee94e60a5adb7a455d1ee46fabe8b0ef13e085f4098cbc8 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_midnight-theme.src b/conf/ext_midnight-theme.src deleted file mode 100644 index 86bcf9c..0000000 --- a/conf/ext_midnight-theme.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/midnight-theme/archive/1.2.2.zip -SOURCE_SUM=916aa7ebbd9df97d2dba0d14b322031307495787ededb4429a295792756b7c2b -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_minimal-markdown-editor.src b/conf/ext_minimal-markdown-editor.src deleted file mode 100644 index e87331d..0000000 --- a/conf/ext_minimal-markdown-editor.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/minimal-markdown-editor/archive/1.3.7.zip -SOURCE_SUM=58232eeb4a129c1c89dbc86271832d68ff3c508e2256e80b099a18e95258cd70 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_no-distraction-theme.src b/conf/ext_no-distraction-theme.src deleted file mode 100644 index 5a457d3..0000000 --- a/conf/ext_no-distraction-theme.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/no-distraction-theme/archive/1.2.2.zip -SOURCE_SUM=c6b3116aab0e87bdba25632f6e0820c98a47c10248c4760853fb69facc860088 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_plus-editor.src b/conf/ext_plus-editor.src deleted file mode 100644 index f64a7fd..0000000 --- a/conf/ext_plus-editor.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/plus-editor/archive/1.5.0.zip -SOURCE_SUM=2d30a2544523f9d482f17a0bdace0b7e803a40c96ccd320926776a403ec6cd6f -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_quick-tags.src b/conf/ext_quick-tags.src deleted file mode 100644 index 872cbd3..0000000 --- a/conf/ext_quick-tags.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/quick-tags/archive/1.3.2.zip -SOURCE_SUM=62B815B436F519412B16A58622D356219F391B11A6FBB88F5E018FF3520214CF -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_simple-task-editor.src b/conf/ext_simple-task-editor.src deleted file mode 100644 index 9527edf..0000000 --- a/conf/ext_simple-task-editor.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/simple-task-editor/archive/1.3.7.zip -SOURCE_SUM=11afda3335058031880b7f1833d639f37b32d92c5b1ad8359503af2784706215 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_solarized-theme.src b/conf/ext_solarized-theme.src deleted file mode 100644 index 30c2aff..0000000 --- a/conf/ext_solarized-theme.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/solarized-dark-theme/archive/1.2.1.zip -SOURCE_SUM=4f05dfb4edc9ce81fd22c01d101cc453509791e24475cfefd235dab15b4abfc6 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_titanium-theme.src b/conf/ext_titanium-theme.src deleted file mode 100644 index 5d697ad..0000000 --- a/conf/ext_titanium-theme.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/titanium-theme/archive/1.2.2.zip -SOURCE_SUM=aa42d8911a514d454af045dc65433aef6361ecfd67ad27f1d8093b9da01bf2b3 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_token-vault.src b/conf/ext_token-vault.src deleted file mode 100644 index aade27d..0000000 --- a/conf/ext_token-vault.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/token-vault/archive/1.0.10.zip -SOURCE_SUM=e078f096717ae03a50634d2267cea457deb49ced30e1741cd2ba28829aa1b947 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/conf/ext_vim-editor.src b/conf/ext_vim-editor.src deleted file mode 100644 index e640f78..0000000 --- a/conf/ext_vim-editor.src +++ /dev/null @@ -1,5 +0,0 @@ -SOURCE_URL=https://github.com/standardnotes/vim-editor/archive/1.3.7.zip -SOURCE_SUM=438AA36D64279EFFF0CF925253FC9666A3DAEBC148E49C2C70D6BC6D51BE78DE -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true diff --git a/scripts/_common.sh b/scripts/_common.sh index 6d87bb1..f02be43 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -9,7 +9,6 @@ NODEJS_VERSION="16" syncing_server_js_version="1.54.1" auth_version="1.46.2" api_gateway_version="1.40.1" -extensions_version="2021.08.27" swap_needed=2048 node_max_old_space_size=6144 diff --git a/scripts/backup b/scripts/backup index 8e419d0..8769460 100755 --- a/scripts/backup +++ b/scripts/backup @@ -29,7 +29,6 @@ ynh_print_info "Loading installation settings..." app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) -final_path_www=$(ynh_app_setting_get --app=$app --key=final_path_www) domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) @@ -39,7 +38,6 @@ db_name=$(ynh_app_setting_get --app=$app --key=db_name) ynh_print_info "Backing up the main app directory..." ynh_backup --src_path="$final_path" -ynh_backup --src_path="$final_path_www" #================================================= # BACKUP THE NGINX CONFIGURATION diff --git a/scripts/change_url b/scripts/change_url index 8cb6067..8056790 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -7,7 +7,6 @@ #================================================= source _common.sh -source ynh_send_readme_to_admin__2 source /usr/share/yunohost/helpers #================================================= @@ -29,8 +28,6 @@ ynh_script_progression --message="Loading installation settings..." --weight=1 # Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) -final_path_www=$(ynh_app_setting_get --app=$app --key=final_path_www) -final_path_extensions=$(ynh_app_setting_get --app=$app --key=final_path_extensions) port_syncing_server_js=$(ynh_app_setting_get --app=$app --key=port_syncing_server_js) port_syncing_server_js_worker=$(ynh_app_setting_get --app=$app --key=port_syncing_server_js_worker) port_auth=$(ynh_app_setting_get --app=$app --key=port_auth) @@ -105,31 +102,6 @@ fi #================================================= # SPECIFIC MODIFICATIONS #================================================= -#================================================= -# Modify Standard Notes - Extensions -#================================================= -ynh_script_progression --message="Modify Standard Notes - Extensions..." --weight=1 - -if [ $new_path = "/" ] -then - path="" -else - path=$new_path -fi - -ynh_replace_string \ - --match_string='url": "https://.*/extensions/src/' \ - --replace_string='url": "https://'$new_domain$path'/extensions/src/' \ - --target_file="$final_path_extensions/repo.json" - -find "$final_path_extensions/src/" -name "*.json" -print0 | while read -d $'\0' file -do - ynh_replace_string \ - --match_string='url": "https://.*/extensions/src/' \ - --replace_string='url": "https://'$new_domain$path'extensions/src/' \ - --target_file="$file" -done - #================================================= # SETUP FAIL2BAN #================================================= @@ -151,22 +123,6 @@ ynh_script_progression --message="Reloading nginx web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload -#================================================= -# SEND A README FOR THE ADMIN -#================================================= -ynh_script_progression --message="Sending a readme for the admin..." - -admin_panel="https://$(grep portal_domain /etc/ssowat/conf.json | cut -d'"' -f4)/yunohost/admin/#/apps/$app" - -echo -e "\ -Standard Notes - Syncing Server's url was successfully changed.\n\ -Please configure the Standard Notes web app or mobile app to use this syncing server: https://$domain$path_url\n\ -\n\ -You changed the url of the server. All Extensions have to be reinstalled by the users. Or you can change the url back.\ -" > message - -ynh_send_readme_to_admin --app_message="message" --type='change_url' - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/install b/scripts/install index 9cf44ba..519f3a7 100755 --- a/scripts/install +++ b/scripts/install @@ -10,7 +10,6 @@ source _common.sh source ynh_add_swap source ynh_install_ruby__2 source ynh_redis -source ynh_send_readme_to_admin__2 source /usr/share/yunohost/helpers #================================================= @@ -35,13 +34,8 @@ app=$YNH_APP_INSTANCE_NAME # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= final_path=/opt/yunohost/$app -final_path_www=/var/www/$app -final_path_extensions="$final_path_www/extensions" ynh_app_setting_set --app=$app --key=final_path --value=$final_path -ynh_app_setting_set --app=$app --key=final_path_www --value=$final_path_www -ynh_app_setting_set --app=$app --key=final_path_extensions --value=$final_path_extensions test ! -e "$final_path" || ynh_die --message="This path already contains a folder" -test ! -e "$final_path_www" || ynh_die --message="This path already contains a folder" # Register (book) web path ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url @@ -62,7 +56,6 @@ ynh_app_setting_set --app=$app --key=redis_db --value="$redis_db" ynh_app_setting_set --app=$app --key=syncing_server_js_version --value=$syncing_server_js_version ynh_app_setting_set --app=$app --key=auth_version --value=$auth_version ynh_app_setting_set --app=$app --key=api_gateway_version --value=$api_gateway_version -ynh_app_setting_set --app=$app --key=extensions_version --value=$extensions_version ynh_app_setting_set --app=$app --key=standalone --value="true" #================================================= @@ -126,30 +119,6 @@ chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:$app "$final_path" -# Copy help file -mkdir -p "$final_path_www/help" -if test -e "$YNH_APP_BASEDIR/sources/extra_files/help"; then - cp --archive "$YNH_APP_BASEDIR/sources/extra_files/help/." "$final_path_www/help" -fi -ynh_replace_vars --file="$final_path_www/help/index.html" - -# Extensions -mkdir -p "$final_path_extensions" - -if test -e "$YNH_APP_BASEDIR/sources/extra_files/extensions"; then - cp --archive "$YNH_APP_BASEDIR/sources/extra_files/extensions/." "$final_path_extensions" -fi - -find "../conf/" -name "ext_*.src" -print0 | while read -d $'\0' file -do - basename=$(basename -as .src $file) - ynh_setup_source --dest_dir="$final_path_extensions/src/${basename#'ext_'}" --source_id="$basename" -done - -chmod 750 "$final_path_www" -chmod -R o-rwx "$final_path_www" -chown -R "www-data":"www-data" "$final_path_www" - #================================================= # NGINX CONFIGURATION #================================================= @@ -219,26 +188,6 @@ pushd "$final_path/live/api-gateway" ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" PATH=$ynh_node_load_PATH yarn install --pure-lockfile ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" PATH=$ynh_node_load_PATH yarn build popd -#================================================= -# INSTALLING Standard Notes - Extensions -#================================================= -ynh_script_progression --message="Setup Standard Notes - Extensions..." --weight=1 - - -if [ $path_url = "/" ] -then - path="" -else - path=$path_url -fi - -ynh_replace_string --match_string="__DOMAIN__PATH__" --replace_string="$domain$path" --target_file="$final_path_extensions/repo.json" - -find "$final_path_extensions/src/" -name "*.json" -print0 | while read -d $'\0' file -do - ynh_replace_string --match_string="__DOMAIN__PATH__" --replace_string="$domain$path" --target_file="$file" -done - #================================================= # SETUP SYSTEMD @@ -343,7 +292,6 @@ ynh_script_progression --message="Configuring SSOwat..." --weight=3 # Everyone can access the app. # The "main" permission is automatically created before the install script. ynh_permission_update --permission="main" --add="visitors" --show_tile="false" -ynh_permission_create --permission="help" --url="/help/" --allowed="all_users" --show_tile="true" --label="Help" #================================================= # RELOAD NGINX @@ -352,25 +300,6 @@ ynh_script_progression --message="Reloading nginx web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload -#================================================= -# SEND A README FOR THE ADMIN -#================================================= -ynh_script_progression --message="Sending a readme for the admin..." - -admin_panel="https://$(grep portal_domain /etc/ssowat/conf.json | cut -d'"' -f4)/yunohost/admin/#/apps/$app" - -echo -e "\ -Standard Notes - Syncing Server was successfully installed.\n\ -Please configure the Standard Notes web app or mobile app to use this syncing server: https://$domain$path_url\n\ -\n\ -Standard Notes extensions are hosted with this package.\n\ -An Help page for setting-up the Standard Notes Server and Extensions have been created under: https://$domain$path_url/help\n\ -The Help page is accessible via the Yunohost Portal.\n\ -You can deactivate the Help page under: $admin_panel\ -" > message - -ynh_send_readme_to_admin --app_message="message" --type='install' - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/remove b/scripts/remove index fa0ca98..4a6d6ec 100755 --- a/scripts/remove +++ b/scripts/remove @@ -28,7 +28,6 @@ port_api_gateway=$(ynh_app_setting_get --app=$app --key=port_api_gateway) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name final_path=$(ynh_app_setting_get --app=$app --key=final_path) -final_path_www=$(ynh_app_setting_get --app=$app --key=final_path_www) #================================================= # STANDARD REMOVE @@ -106,7 +105,6 @@ ynh_script_progression --message="Removing app main directory..." --weight=1 # Remove the app directory securely ynh_secure_remove --file="$final_path" -ynh_secure_remove --file="$final_path_www" #================================================= # REMOVE NGINX CONFIGURATION diff --git a/scripts/restore b/scripts/restore index 83db97f..9a795a3 100755 --- a/scripts/restore +++ b/scripts/restore @@ -34,7 +34,6 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) -final_path_www=$(ynh_app_setting_get --app=$app --key=final_path_www) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) @@ -87,7 +86,6 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_script_progression --message="Restoring the app main directory..." --weight=1 ynh_restore_file --origin_path="$final_path" -ynh_restore_file --origin_path="$final_path_www" #================================================= # RECREATE THE DEDICATED USER @@ -106,10 +104,6 @@ chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:$app "$final_path" -chmod 750 "$final_path_www" -chmod -R o-rwx "$final_path_www" -chown -R "www-data":"www-data" "$final_path_www" - mkdir -p "/var/log/$app" chown -R $app: "/var/log/$app" diff --git a/scripts/upgrade b/scripts/upgrade index af4a066..cf41261 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -10,7 +10,6 @@ source _common.sh source ynh_add_swap source ynh_install_ruby__2 source ynh_redis -source ynh_send_readme_to_admin__2 source /usr/share/yunohost/helpers #================================================= @@ -24,8 +23,6 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) -final_path_www=$(ynh_app_setting_get --app=$app --key=final_path_www) -final_path_extensions=$(ynh_app_setting_get --app=$app --key=final_path_extensions) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name @@ -139,11 +136,6 @@ if ! ynh_permission_exists --permission="main" then ynh_permission_create --permission="main" --url="/" --allowed="visitors" --show_tile="false" fi -# Create a permission if needed -if ! ynh_permission_exists --permission="help" -then - ynh_permission_create --permission="help" --url="/help/" --allowed="all_users" --show_tile="true" --label="Help" -fi # If final_path doesn't exist, create it if [ -z "$final_path" ]; then @@ -151,17 +143,6 @@ if [ -z "$final_path" ]; then ynh_app_setting_set --app=$app --key=final_path --value=$final_path fi -# If final_path doesn't exist, create it -if [ -z "$final_path_www" ]; then - final_path_www=/var/www/$app - ynh_app_setting_set --app=$app --key=final_path_www --value=$final_path_www -fi - -# If final_path doesn't exist, create it -if [ -z "$final_path_extensions" ]; then - final_path_extensions=/var/www/$app/extensions - ynh_app_setting_set --app=$app --key=final_path_extensions --value=$final_path_extensions -fi # If redis_db doesn't exist, create it if [ -z "$redis_db" ]; then @@ -245,6 +226,22 @@ if [ -n $(ynh_app_setting_get --app="$app" --key=port) ]; then ynh_app_setting_delete --app=$app --key=port fi +# If final_path exist, delete it +if [ -n "$final_path_www" ]; then + ynh_app_setting_delete --app=$app --key=final_path_www +fi + +# If final_path exist, delete it +if [ -n "$final_path_extensions" ]; then + ynh_app_setting_delete --app=$app --key=final_path_extensions +fi + +# If permission help exists, delete it +if ynh_permission_exists --permission="help" +then + ynh_permission_delete --permission="help" +fi + # If old service exsits; remove it if ynh_exec_warn_less yunohost service status "$app" >/dev/null then @@ -275,6 +272,9 @@ fi if [ -e "$final_path/live/auth-worker" ]; then ynh_secure_remove --file="$final_path/live/auth-worker" fi +if [ -e "/var/www/$app" ]; then + ynh_secure_remove --file="/var/www/$app" +fi #================================================= # CREATE DEDICATED USER @@ -336,40 +336,10 @@ then ynh_setup_source --source_id=app_api-gateway --dest_dir="$final_path/live/api-gateway" fi -if [[ "$extensions_version_installed" < "$extensions_version" ]] -then - # Remove destination directory - ynh_secure_remove --file="$final_path_extensions" - # Download, check integrity, uncompress and patch the source from app.src - mkdir -p "$final_path_extensions" - if test -e "../sources/extra_files/extensions" - then - cp -a "../sources/extra_files/extensions/." "$final_path_extensions" - fi - - find "../conf/" -name "ext_*.src" -print0 | while read -d $'\0' file - do - basename=$(basename -as .src $file) - ynh_setup_source --dest_dir="$final_path_extensions/src/${basename#'ext_'}" --source_id="$basename" - done -fi - -# Copy help file -ynh_secure_remove --file="$final_path_www/help" -mkdir -p "$final_path_www/help" -if test -e "$YNH_APP_BASEDIR/sources/extra_files/help"; then - cp --archive "$YNH_APP_BASEDIR/sources/extra_files/help/." "$final_path_www/help" -fi -ynh_replace_vars --file="$final_path_www/help/index.html" - chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:$app "$final_path" -chmod 750 "$final_path_www" -chmod -R o-rwx "$final_path_www" -chown -R "www-data":"www-data" "$final_path_www" - #================================================= # NGINX CONFIGURATION #================================================= @@ -447,29 +417,6 @@ then fi fi -#================================================= -# INSTALLING Standard Notes - Extensions -#================================================= -if [[ "$extensions_version_installed" < "$extensions_version" ]] -then - ynh_script_progression --message="Installing Standard Notes - Extensions..." --weight=1 - - if [ $path_url = "/" ] - then - path="" - else - path=$path_url - fi - - ynh_replace_string --match_string="__DOMAIN__PATH__" --replace_string="$domain$path" --target_file="$final_path_extensions/repo.json" - - find "$final_path_extensions/src/" -name "*.json" -print0 | while read -d $'\0' file - do - ynh_replace_string --match_string="__DOMAIN__PATH__" --replace_string="$domain$path" --target_file="$file" - done - ynh_app_setting_set --app=$app --key=extensions_version --value=$extensions_version -fi - #================================================= # SETUP SYSTEMD #================================================= @@ -570,25 +517,6 @@ ynh_script_progression --message="Reloading nginx web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload -#================================================= -# SEND A README FOR THE ADMIN -#================================================= -ynh_script_progression --message="Sending a readme for the admin..." - -admin_panel="https://$(grep portal_domain /etc/ssowat/conf.json | cut -d'"' -f4)/yunohost/admin/#/apps/$app" - -echo -e "\ -Standard Notes - Syncing Server was successfully upgraded.\n\ -Please configure the Standard Notes web app or mobile app to use this syncing server: https://$domain$path_url\n\ -\n\ -Standard Notes extensions are hosted with this package.\n\ -An Help page for setting-up the Standard Notes Server and Extensions have been created under: https://$domain$path_url/help\n\ -The Help page is accessible via the Yunohost Portal.\n\ -You can deactivate the Help page under: $admin_panel\ -" > message - -ynh_send_readme_to_admin --app_message="message" --type='upgrade' - #================================================= # STORE SETTINGS #================================================= diff --git a/scripts/ynh_send_readme_to_admin__2 b/scripts/ynh_send_readme_to_admin__2 deleted file mode 100644 index 06cff8c..0000000 --- a/scripts/ynh_send_readme_to_admin__2 +++ /dev/null @@ -1,140 +0,0 @@ -#!/bin/bash - -# Send an email to inform the administrator -# -# usage: ynh_send_readme_to_admin --app_message=app_message [--recipients=recipients] [--type=type] -# | arg: -m --app_message= - The file with the content to send to the administrator. -# | arg: -r, --recipients= - The recipients of this email. Use spaces to separate multiples recipients. - default: root -# example: "root admin@domain" -# If you give the name of a YunoHost user, ynh_send_readme_to_admin will find its email adress for you -# example: "root admin@domain user1 user2" -# | arg: -t, --type= - Type of mail, could be 'backup', 'change_url', 'install', 'remove', 'restore', 'upgrade' -ynh_send_readme_to_admin() { - # Declare an array to define the options of this helper. - declare -Ar args_array=( [m]=app_message= [r]=recipients= [t]=type= ) - local app_message - local recipients - local type - # Manage arguments with getopts - - ynh_handle_getopts_args "$@" - app_message="${app_message:-}" - recipients="${recipients:-root}" - type="${type:-install}" - - # Get the value of admin_mail_html - admin_mail_html=$(ynh_app_setting_get $app admin_mail_html) - admin_mail_html="${admin_mail_html:-0}" - - # Retrieve the email of users - find_mails () { - local list_mails="$1" - local mail - local recipients=" " - # Read each mail in argument - for mail in $list_mails - do - # Keep root or a real email address as it is - if [ "$mail" = "root" ] || echo "$mail" | grep --quiet "@" - then - recipients="$recipients $mail" - else - # But replace an user name without a domain after by its email - if mail=$(ynh_user_get_info "$mail" "mail" 2> /dev/null) - then - recipients="$recipients $mail" - fi - fi - done - echo "$recipients" - } - recipients=$(find_mails "$recipients") - - # Subject base - local mail_subject="☁️🆈🅽🅷☁️: \`$app\`" - - # Adapt the subject according to the type of mail required. - if [ "$type" = "backup" ]; then - mail_subject="$mail_subject has just been backup." - elif [ "$type" = "change_url" ]; then - mail_subject="$mail_subject has just been moved to a new URL!" - elif [ "$type" = "remove" ]; then - mail_subject="$mail_subject has just been removed!" - elif [ "$type" = "restore" ]; then - mail_subject="$mail_subject has just been restored!" - elif [ "$type" = "upgrade" ]; then - mail_subject="$mail_subject has just been upgraded!" - else # install - mail_subject="$mail_subject has just been installed!" - fi - - local mail_message="This is an automated message from your beloved YunoHost server. - -Specific information for the application $app. - -$(if [ -n "$app_message" ] -then - cat "$app_message" -else - echo "...No specific information..." -fi) - ---- -Automatic diagnosis data from YunoHost - -__PRE_TAG1__$(yunohost tools diagnosis | grep -B 100 "services:" | sed '/services:/d')__PRE_TAG2__" - - # Store the message into a file for further modifications. - echo "$mail_message" > mail_to_send - - # If a html email is required. Apply html tags to the message. - if [ "$admin_mail_html" -eq 1 ] - then - # Insert 'br' tags at each ending of lines. - ynh_replace_string "$" "
" mail_to_send - - # Insert starting HTML tags - sed --in-place '1s@^@\n\n\n\n@' mail_to_send - - # Keep tabulations - ynh_replace_string " " "\ \ " mail_to_send - ynh_replace_string "\t" "\ \ " mail_to_send - - # Insert url links tags - ynh_replace_string "__URL_TAG1__\(.*\)__URL_TAG2__\(.*\)__URL_TAG3__" "\1" mail_to_send - - # Insert pre tags - ynh_replace_string "__PRE_TAG1__" "
" mail_to_send
-		ynh_replace_string "__PRE_TAG2__" "<\pre>" mail_to_send
-
-		# Insert finishing HTML tags
-		echo -e "\n\n" >> mail_to_send
-
-	# Otherwise, remove tags to keep a plain text.
-	else
-		# Remove URL tags
-		ynh_replace_string "__URL_TAG[1,3]__" "" mail_to_send
-		ynh_replace_string "__URL_TAG2__" ": " mail_to_send
-
-		# Remove PRE tags
-		ynh_replace_string "__PRE_TAG[1-2]__" "" mail_to_send
-	fi
-
-	# Define binary to use for mail command
-	if [ -e /usr/bin/bsd-mailx ]
-	then
-		local mail_bin=/usr/bin/bsd-mailx
-	else
-		local mail_bin=/usr/bin/mail.mailutils
-	fi
-
-	if [ "$admin_mail_html" -eq 1 ]
-	then
-		content_type="text/html"
-	else
-		content_type="text/plain"
-	fi
-
-	# Send the email to the recipients
-	cat mail_to_send | $mail_bin -a "Content-Type: $content_type; charset=UTF-8" -s "$mail_subject" "$recipients"
-}
diff --git a/sources/extra_files/extensions/repo.json b/sources/extra_files/extensions/repo.json
deleted file mode 100644
index a24cb0d..0000000
--- a/sources/extra_files/extensions/repo.json
+++ /dev/null
@@ -1,302 +0,0 @@
-{
-    "content_type": "SN|Repo",
-    "packages": [
-        {
-            "area": "theme",
-            "content_type": "SN|Theme",
-            "description": "Autobiography",
-            "dock_icon": {
-                "background_color": "#9D7441",
-                "border_color": "#9D7441",
-                "foreground_color": "#ECE4DB",
-                "type": "circle"
-            },
-            "download_url": "https://github.com/standardnotes/autobiography-theme/archive/1.0.0.zip",
-            "identifier": "org.stndardnotes.autobiography-theme",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/autobiography-theme.json",
-            "name": "Autobiography Theme",
-            "url": "https://__DOMAIN__PATH__/extensions/src/autobiography-theme/dist/dist.css",
-            "version": "1.0.0"
-        },
-        {
-            "area": "theme",
-            "content_type": "SN|Theme",
-            "description": "Light on the eyes, heavy on the spirit.",
-            "dock_icon": {
-                "background_color": "#a464c2",
-                "border_color": "#a464c2",
-                "foreground_color": "#ffffff",
-                "type": "circle"
-            },
-            "download_url": "https://github.com/standardnotes/focus-theme/archive/1.2.3.zip",
-            "identifier": "org.stndardnotes.focus-theme",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/focus-theme.json",
-            "name": "Focus Theme",
-            "url": "https://__DOMAIN__PATH__/extensions/src/focus-theme/dist/dist.css",
-            "version": "1.2.3"
-        },
-        {
-            "area": "theme",
-            "content_type": "SN|Theme",
-            "description": "Calm and relaxed. Take some time off.",
-            "dock_icon": {
-                "background_color": "#fca429",
-                "border_color": "#fca429",
-                "foreground_color": "#ffffff",
-                "type": "circle"
-            },
-            "download_url": "https://github.com/standardnotes/futura-theme/archive/1.2.2.zip",
-            "identifier": "org.standardnotes.futura-theme",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/futura-theme.json",
-            "name": "Futura Theme",
-            "url": "https://__DOMAIN__PATH__/extensions/src/futura-theme/dist/dist.css",
-            "version": "1.2.2"
-        },
-        {
-            "area": "theme",
-            "content_type": "SN|Theme",
-            "description": "Elegant utilitarianism.",
-            "dock_icon": {
-                "background_color": "#086DD6",
-                "border_color": "#086DD6",
-                "foreground_color": "#ffffff",
-                "type": "circle"
-            },
-            "download_url": "https://github.com/standardnotes/midnight-theme/archive/1.2.2.zip",
-            "identifier": "org.standardnotes.midnight-theme",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/midnight-theme.json",
-            "name": "Midnight Theme",
-            "url": "https://__DOMAIN__PATH__/extensions/src/midnight-theme/dist/dist.css",
-            "version": "1.2.2"
-        },
-        {
-            "area": "theme",
-            "content_type": "SN|Theme",
-            "description": "The perfect theme for any time.",
-            "dock_icon": {
-                "background_color": "#2AA198",
-                "border_color": "#2AA198",
-                "foreground_color": "#ffffff",
-                "type": "circle"
-            },
-            "download_url": "https://github.com/standardnotes/solarized-dark-theme/archive/1.2.1.zip",
-            "identifier": "org.stndardnotes.solarized-dark-theme",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/solarized-dark-theme.json",
-            "name": "Solarized Dark Theme",
-            "url": "https://__DOMAIN__PATH__/extensions/src/solarized-theme/dist/dist.css",
-            "version": "1.2.1"
-        },
-        {
-            "area": "theme",
-            "content_type": "SN|Theme",
-            "description": "Light on the eyes, heavy on the spirit.",
-            "dock_icon": {
-                "background_color": "#6e2b9e",
-                "border_color": "#6e2b9e",
-                "foreground_color": "#ffffff",
-                "type": "circle"
-            },
-            "download_url": "https://github.com/standardnotes/titanium-theme/archive/1.2.2.zip",
-            "identifier": "org.stndardnotes.titanium-theme",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/titanium-theme.json",
-            "name": "Titanium Theme",
-            "url": "https://__DOMAIN__PATH__/extensions/src/titanium-theme/dist/dist.css",
-            "version": "1.2.2"
-        },
-        {
-            "area": "theme",
-            "content_type": "SN|Theme",
-            "description": "A smart theme that minimizes the tags and notes panels when they are not in use..",
-            "download_url": "https://github.com/standardnotes/dynamic-theme/archive/1.0.0.zip",
-            "identifier": "org.standardnotes.dynamic-theme",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/dynamic-theme.json",
-            "layerable": true,
-            "name": "Dynamic Theme",
-            "no_mobile": true,
-            "url": "https://__DOMAIN__PATH__/extensions/src/dynamic-theme/dist/dist.css",
-            "version": "1.0.0"
-        },
-        {
-            "area": "theme",
-            "content_type": "SN|Theme",
-            "description": "A distraction-free writing environment for high levels of clarity and focus.",
-            "dock_icon": {
-                "source": "",
-                "type": "svg"
-            },
-            "download_url": "https://github.com/standardnotes/no-distraction-theme/archive/1.2.2.zip",
-            "identifier": "org.standardnotes.no-distraction",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/no-distraction-theme.json",
-            "layerable": true,
-            "name": "No Distraction Theme",
-            "no_mobile": true,
-            "url": "https://__DOMAIN__PATH__/extensions/src/no-distraction-theme/dist/dist.css",
-            "version": "1.2.2"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "A simple and peaceful rich editor that helps you write and think clearly. Features FileSafe integration, so you can embed your images, videos, and audio recordings directly inline.",
-            "download_url": "https://github.com/standardnotes/bold-editor/archive/1.2.2.zip",
-            "identifier": "org.standardnotes.bold-editor",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/bold-editor.json",
-            "name": "Bold Editor",
-            "url": "https://__DOMAIN__PATH__/extensions/src/bold-editor/dist/index.html",
-            "version": "1.2.2"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "Syntax highlighting and convenient keyboard shortcuts for over 120 programming languages. Ideal for code snippets and procedures.",
-            "download_url": "https://github.com/standardnotes/code-editor/archive/1.3.8.zip",
-            "identifier": "org.standardnotes.code-editor",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/code-editor.json",
-            "name": "Code Editor",
-            "url": "https://__DOMAIN__PATH__/extensions/src/code-editor/index.html",
-            "version": "1.3.8"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "A Markdown editor with dynamic split-pane preview.",
-            "download_url": "https://github.com/standardnotes/markdown-basic/archive/1.4.0.zip",
-            "identifier": "org.standardnotes.markdown-basic-editor",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/markdown-basic.json",
-            "name": "Markdown Basic",
-            "url": "https://__DOMAIN__PATH__/extensions/src/markdown-basic/dist/index.html",
-            "version": "1.4.0"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "A fully featured Markdown editor that supports live preview, a styling toolbar, and split pane support.",
-            "download_url": "https://github.com/standardnotes/markdown-pro/archive/1.3.14.zip",
-            "identifier": "org.standardnotes.markdown-pro",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/markdown-pro.json",
-            "name": "Markdown Pro",
-            "url": "https://__DOMAIN__PATH__/extensions/src/markdown-pro/dist/index.html",
-            "version": "1.3.14"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "A beautiful split-pane Markdown editor with synced-scroll, LaTeX support, and colorful syntax.",
-            "download_url": "https://github.com/standardnotes/math-editor/archive/1.3.4.zip",
-            "identifier": "org.standardnotes.math-editor",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/math-editor.json",
-            "name": "Math Editor",
-            "url": "https://__DOMAIN__PATH__/extensions/src/math-editor/index.html",
-            "version": "1.3.4"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "A minimal Markdown editor with inline style support.",
-            "download_url": "https://github.com/standardnotes/minimal-markdown-editor/archive/1.3.7.zip",
-            "identifier": "org.stndardnotes.minimal-markdown-editor",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/minimal-markdown-editor.json",
-            "name": "Minimal Markdown Editor",
-            "url": "https://__DOMAIN__PATH__/extensions/src/minimal-markdown-editor/index.html",
-            "version": "1.3.7"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "From highlighting to custom font sizes and colors, to tables and lists, this editor is perfect for crafting any document. (Converts your note to an HTML format.)",
-            "download_url": "https://github.com/standardnotes/plus-editor/archive/1.5.0.zip",
-            "identifier": "org.standardnotes.plus-editor",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/plus-editor.json",
-            "name": "Plus Editor",
-            "url": "https://__DOMAIN__PATH__/extensions/src/plus-editor/dist/index.html",
-            "version": "1.5.0"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "A great way to manage short-term and long-term to-do's. You can mark simple-tasks as completed, change their order, and edit the text naturally in place.",
-            "download_url": "https://github.com/standardnotes/simple-task-editor/archive/1.3.7.zip",
-            "identifier": "org.standardnotes.simple-task-editor",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/simple-task-editor.json",
-            "name": "Task Editor",
-            "url": "https://__DOMAIN__PATH__/extensions/src/simple-task-editor/dist/index.html",
-            "version": "1.3.7"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "Use Standard Notes on both desktop and mobile as your authenticator app. TokenVault handles your 2FA secrets so that you never lose them again, or have to start over when you get a new device.",
-            "download_url": "https://github.com/standardnotes/token-vault/archive/1.0.10.zip",
-            "identifier": "org.stndardnotes.token-vault",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/token-vault.json",
-            "name": "Token Vault",
-            "url": "https://__DOMAIN__PATH__/extensions/src/token-vault/dist/index.html",
-            "version": "1.0.10"
-        },
-        {
-            "area": "editor-editor",
-            "content_type": "SN|Component",
-            "description": "A code editor with Vim key bindings.",
-            "download_url": "https://github.com/standardnotes/vim-editor/archive/1.3.7.zip",
-            "identifier": "org.stndardnotes.vim-editor",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/vim-editor.json",
-            "name": "Vim Editor",
-            "url": "https://__DOMAIN__PATH__/extensions/src/vim-editor/index.html",
-            "version": "1.3.7"
-        },
-        {
-            "area": "editor-stack",
-            "content_type": "SN|Component",
-            "description": "Useful utility bar with information about the current note as well as actions like duplicate, copy, and save.",
-            "download_url": "https://github.com/standardnotes/action-bar/archive/1.3.2.zip",
-            "identifier": "org.stndardnotes.action-bar",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/action-bar.json",
-            "name": "Action Bar",
-            "url": "https://__DOMAIN__PATH__/extensions/src/action-bar/index.html",
-            "version": "1.3.2"
-        },
-        {
-            "area": "tags-list",
-            "content_type": "SN|Component",
-            "description": "Create nested folders from your tags with easy drag and drop. Folders also supports Smart Tags, which allow you to build custom filters for viewing your notes.",
-            "download_url": "https://github.com/standardnotes/folders-component/archive/1.3.8.zip",
-            "identifier": "org.stndardnotes.folders-component",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/folders-component.json",
-            "name": "Folders",
-            "url": "https://__DOMAIN__PATH__/extensions/src/folders-component/index.html",
-            "version": "1.3.8"
-        },
-        {
-            "area": "editor-stack",
-            "content_type": "SN|Component",
-            "description": "Push note changes to a public or private GitHub repository, with options for file extension and commit message.",
-            "download_url": "https://github.com/standardnotes/github-push/archive/1.2.4.zip",
-            "identifier": "org.stndardnotes.github-push",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/github-push.json",
-            "name": "Github Push",
-            "url": "https://__DOMAIN__PATH__/extensions/src/github-push/index.html",
-            "version": "1.2.4"
-        },
-        {
-            "area": "modal",
-            "content_type": "SN|Component",
-            "description": "Set up 2FA to enable an extra layer of security on your private notes account.",
-            "download_url": "https://github.com/standardnotes/mfa-link/archive/1.2.5.zip",
-            "identifier": "org.stndardnotes.mfa-link",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/mfa-link.json",
-            "name": "MFA-Link",
-            "url": "https://__DOMAIN__PATH__/extensions/src/mfa-link/dist/index.html",
-            "version": "1.2.5"
-        },
-        {
-            "area": "note-tags",
-            "content_type": "SN|Component",
-            "description": "Work more efficiently by quickly selecting from a live list of tags while you type. Supports keyboard shortcuts and folders.",
-            "download_url": "https://github.com/standardnotes/quick-tags/archive/1.3.2.zip",
-            "identifier": "org.stndardnotes.quick-tags",
-            "latest_url": "https://__DOMAIN__PATH__/extensions/src/quick-tags.json",
-            "name": "Quick Tags",
-            "url": "https://__DOMAIN__PATH__/extensions/src/quick-tags/index.html",
-            "version": "1.3.2"
-        }
-    ]
-}
diff --git a/sources/extra_files/extensions/src/action-bar.json b/sources/extra_files/extensions/src/action-bar.json
deleted file mode 100644
index e3507dd..0000000
--- a/sources/extra_files/extensions/src/action-bar.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.stndardnotes.action-bar",
-  "name": "Action Bar",
-  "content_type": "SN|Component",
-  "area": "editor-stack",
-  "version": "1.3.2",
-  "description": "Useful utility bar with information about the current note as well as actions like duplicate, copy, and save.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/action-bar/index.html", 
-  "download_url": "https://github.com/standardnotes/action-bar/archive/1.3.2.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/action-bar.json"
-}
diff --git a/sources/extra_files/extensions/src/autobiography-theme.json b/sources/extra_files/extensions/src/autobiography-theme.json
deleted file mode 100644
index 3a354a0..0000000
--- a/sources/extra_files/extensions/src/autobiography-theme.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "identifier": "org.stndardnotes.autobiography-theme",
-  "name": "Autobiography Theme",
-  "content_type": "SN|Theme",
-  "area": "theme",
-  "version": "1.0.0",
-  "description": "Autobiography",
-  "url": "https://__DOMAIN__PATH__/extensions/src/autobiography-theme/dist/dist.css", 
-  "download_url": "https://github.com/sn-extensions/autobiography-theme/archive/1.0.0.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/autobiography-theme.json",
-  "dock_icon":{
-    "type":"circle",
-    "background_color":"#9D7441",
-    "foreground_color":"#ECE4DB",
-    "border_color":"#9D7441"
-  }
-}
diff --git a/sources/extra_files/extensions/src/bold-editor.json b/sources/extra_files/extensions/src/bold-editor.json
deleted file mode 100644
index 094c047..0000000
--- a/sources/extra_files/extensions/src/bold-editor.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.standardnotes.bold-editor",
-  "name": "Bold Editor",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.2.2",
-  "description": "A simple and peaceful rich editor that helps you write and think clearly. Features FileSafe integration, so you can embed your images, videos, and audio recordings directly inline.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/bold-editor/dist/index.html", 
-  "download_url": "https://github.com/standardnotes/bold-editor/archive/1.2.2.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/bold-editor.json"
-}
diff --git a/sources/extra_files/extensions/src/code-editor.json b/sources/extra_files/extensions/src/code-editor.json
deleted file mode 100644
index cb5f1aa..0000000
--- a/sources/extra_files/extensions/src/code-editor.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.standardnotes.code-editor",
-  "name": "Code Editor",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.3.8",
-  "description": "Syntax highlighting and convenient keyboard shortcuts for over 120 programming languages. Ideal for code snippets and procedures.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/code-editor/index.html", 
-  "download_url": "https://github.com/standardnotes/code-editor/archive/1.3.8.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/code-editor.json"
-}
diff --git a/sources/extra_files/extensions/src/dynamic-theme.json b/sources/extra_files/extensions/src/dynamic-theme.json
deleted file mode 100644
index df2ded1..0000000
--- a/sources/extra_files/extensions/src/dynamic-theme.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "identifier": "org.standardnotes.dynamic-theme",
-  "name": "Dynamic Theme",
-  "content_type": "SN|Theme",
-  "area": "theme",
-  "version": "1.0.0",
-  "description": "A smart theme that minimizes the tags and notes panels when they are not in use..",
-  "url": "https://__DOMAIN__PATH__/extensions/src/dynamic-theme/dist/dist.css", 
-  "download_url": "https://github.com/sn-extensions/dynamic-theme/archive/1.0.0.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/dynamic-theme.json",
-  "layerable":true,
-  "no_mobile":true
-}
diff --git a/sources/extra_files/extensions/src/focus-theme.json b/sources/extra_files/extensions/src/focus-theme.json
deleted file mode 100644
index 02fc461..0000000
--- a/sources/extra_files/extensions/src/focus-theme.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "identifier": "org.stndardnotes.focus-theme",
-  "name": "Focus Theme",
-  "content_type": "SN|Theme",
-  "area": "theme",
-  "version": "1.2.3",
-  "description": "Light on the eyes, heavy on the spirit.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/focus-theme/dist/dist.css", 
-  "download_url": "https://github.com/sn-extensions/focus-theme/archive/1.2.3.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/focus-theme.json",
-  "dock_icon":{
-    "type":"circle",
-    "background_color":"#a464c2",
-    "foreground_color":"#ffffff",
-    "border_color":"#a464c2"
-  }
-}
diff --git a/sources/extra_files/extensions/src/folders-component.json b/sources/extra_files/extensions/src/folders-component.json
deleted file mode 100644
index 4330ab8..0000000
--- a/sources/extra_files/extensions/src/folders-component.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.stndardnotes.folders-component",
-  "name": "Folders",
-  "content_type": "SN|Component",
-  "area": "tags-list",
-  "version": "1.3.8",
-  "description": "Create nested folders from your tags with easy drag and drop. Folders also supports Smart Tags, which allow you to build custom filters for viewing your notes.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/folders-component/index.html", 
-  "download_url": "https://github.com/standardnotes/folders-component/archive/1.3.8.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/folders-component.json"
-}
diff --git a/sources/extra_files/extensions/src/futura-theme.json b/sources/extra_files/extensions/src/futura-theme.json
deleted file mode 100644
index b869315..0000000
--- a/sources/extra_files/extensions/src/futura-theme.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "identifier": "org.standardnotes.futura-theme",
-  "name": "Futura Theme",
-  "content_type": "SN|Theme",
-  "area": "theme",
-  "version": "1.2.2",
-  "description": "Calm and relaxed. Take some time off.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/futura-theme/dist/dist.css", 
-  "download_url": "https://github.com/sn-extensions/futura-theme/archive/1.2.2.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/futura-theme.json",
-  "dock_icon":{
-    "type":"circle",
-    "background_color":"#fca429",
-    "foreground_color":"#ffffff",
-    "border_color":"#fca429"
-  }
-}
diff --git a/sources/extra_files/extensions/src/github-push.json b/sources/extra_files/extensions/src/github-push.json
deleted file mode 100644
index 91f8969..0000000
--- a/sources/extra_files/extensions/src/github-push.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.stndardnotes.github-push",
-  "name": "Github Push",
-  "content_type": "SN|Component",
-  "area": "editor-stack",
-  "version": "1.2.4",
-  "description": "Push note changes to a public or private GitHub repository, with options for file extension and commit message.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/github-push/index.html", 
-  "download_url": "https://github.com/sn-extensions/github-push/archive/1.2.4.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/github-push.json"
-}
diff --git a/sources/extra_files/extensions/src/markdown-basic.json b/sources/extra_files/extensions/src/markdown-basic.json
deleted file mode 100644
index 95f5974..0000000
--- a/sources/extra_files/extensions/src/markdown-basic.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.standardnotes.markdown-basic-editor",
-  "name": "Markdown Basic",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.4.0",
-  "description": "A Markdown editor with dynamic split-pane preview.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/markdown-basic/dist/index.html", 
-  "download_url": "https://github.com/standardnotes/markdown-basic/archive/1.4.0.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/markdown-basic.json"
-}
diff --git a/sources/extra_files/extensions/src/markdown-pro.json b/sources/extra_files/extensions/src/markdown-pro.json
deleted file mode 100644
index 8f06235..0000000
--- a/sources/extra_files/extensions/src/markdown-pro.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.standardnotes.markdown-pro",
-  "name": "Markdown Pro",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.3.14",
-  "description": "A fully featured Markdown editor that supports live preview, a styling toolbar, and split pane support.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/markdown-pro/dist/index.html", 
-  "download_url": "https://github.com/standardnotes/markdown-pro/archive/1.3.14.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/markdown-pro.json"
-}
diff --git a/sources/extra_files/extensions/src/math-editor.json b/sources/extra_files/extensions/src/math-editor.json
deleted file mode 100644
index cbc9884..0000000
--- a/sources/extra_files/extensions/src/math-editor.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.standardnotes.math-editor",
-  "name": "Math Editor",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.3.4",
-  "description": "A beautiful split-pane Markdown editor with synced-scroll, LaTeX support, and colorful syntax.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/math-editor/index.html", 
-  "download_url": "https://github.com/sn-extensions/math-editor/archive/1.3.4.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/math-editor.json"
-}
diff --git a/sources/extra_files/extensions/src/mfa-link.json b/sources/extra_files/extensions/src/mfa-link.json
deleted file mode 100644
index d3e625e..0000000
--- a/sources/extra_files/extensions/src/mfa-link.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.stndardnotes.mfa-link",
-  "name": "MFA-Link",
-  "content_type": "SN|Component",
-  "area": "editor-stack",
-  "version": "1.2.5",
-  "description": "Set up 2FA to enable an extra layer of security on your private notes account.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/mfa-link/dist/index.html", 
-  "download_url": "https://github.com/sn-extensions/mfa-link/archive/1.2.5.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/mfa-link.json"
-}
diff --git a/sources/extra_files/extensions/src/midnight-theme.json b/sources/extra_files/extensions/src/midnight-theme.json
deleted file mode 100644
index 0fdc6a7..0000000
--- a/sources/extra_files/extensions/src/midnight-theme.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "identifier": "org.standardnotes.midnight-theme",
-  "name": "Midnight Theme",
-  "content_type": "SN|Theme",
-  "area": "theme",
-  "version": "1.2.2",
-  "description": "Elegant utilitarianism.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/midnight-theme/dist/dist.css", 
-  "download_url": "https://github.com/sn-extensions/midnight-theme/archive/1.2.2.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/midnight-theme.json",
-  "dock_icon":{
-    "type":"circle",
-    "background_color":"#086DD6",
-    "foreground_color":"#ffffff",
-    "border_color":"#086DD6"
-  }
-}
diff --git a/sources/extra_files/extensions/src/minimal-markdown-editor.json b/sources/extra_files/extensions/src/minimal-markdown-editor.json
deleted file mode 100644
index 9274f05..0000000
--- a/sources/extra_files/extensions/src/minimal-markdown-editor.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.stndardnotes.minimal-markdown-editor",
-  "name": "Minimal Markdown Editor",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.3.7",
-  "description": "A minimal Markdown editor with inline style support.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/minimal-markdown-editor/index.html", 
-  "download_url": "https://github.com/sn-extensions/minimal-markdown-editor/archive/1.3.7.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/minimal-markdown-editor.json"
-}
diff --git a/sources/extra_files/extensions/src/no-distraction-theme.json b/sources/extra_files/extensions/src/no-distraction-theme.json
deleted file mode 100644
index 3955ba4..0000000
--- a/sources/extra_files/extensions/src/no-distraction-theme.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "identifier": "org.standardnotes.no-distraction",
-  "name": "No Distraction Theme",
-  "content_type": "SN|Theme",
-  "area": "theme",
-  "version": "1.2.2",
-  "description": "A distraction-free writing environment for high levels of clarity and focus.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/no-distraction-theme/dist/dist.css", 
-  "download_url": "https://github.com/sn-extensions/no-distraction-theme/archive/1.2.2.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/no-distraction-theme.json",
-  "layerable":true,
-  "no_mobile":true,
-  "dock_icon":{
-    "type":"svg",
-    "source":""
-    }
-}
diff --git a/sources/extra_files/extensions/src/plus-editor.json b/sources/extra_files/extensions/src/plus-editor.json
deleted file mode 100644
index 8fbad62..0000000
--- a/sources/extra_files/extensions/src/plus-editor.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.standardnotes.plus-editor",
-  "name": "Plus Editor",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.5.0",
-  "description": "From highlighting to custom font sizes and colors, to tables and lists, this editor is perfect for crafting any document. (Converts your note to an HTML format.)",
-  "url": "https://__DOMAIN__PATH__/extensions/src/plus-editor/dist/index.html", 
-  "download_url": "https://github.com/standardnotes/plus-editor/archive/1.5.0.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/plus-editor.json"
-}
diff --git a/sources/extra_files/extensions/src/quick-tags.json b/sources/extra_files/extensions/src/quick-tags.json
deleted file mode 100644
index bc2e1e5..0000000
--- a/sources/extra_files/extensions/src/quick-tags.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.stndardnotes.quick-tags",
-  "name": "Quick Tags",
-  "content_type": "SN|Component",
-  "area": "note-tags",
-  "version": "1.3.2",
-  "description": "Work more efficiently by quickly selecting from a live list of tags while you type. Supports keyboard shortcuts and folders.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/quick-tags/index.html", 
-  "download_url": "https://github.com/standardnotes/quick-tags/archive/1.3.2.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/quick-tags.json"
-}
diff --git a/sources/extra_files/extensions/src/simple-task-editor.json b/sources/extra_files/extensions/src/simple-task-editor.json
deleted file mode 100644
index af54618..0000000
--- a/sources/extra_files/extensions/src/simple-task-editor.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.standardnotes.simple-task-editor",
-  "name": "Task Editor",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.3.7",
-  "description": "A great way to manage short-term and long-term to-do's. You can mark simple-tasks as completed, change their order, and edit the text naturally in place.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/simple-task-editor/dist/index.html", 
-  "download_url": "https://github.com/sn-extensions/simple-task-editor/archive/1.3.7.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/simple-task-editor.json"
-}
diff --git a/sources/extra_files/extensions/src/solarized-dark-theme.json b/sources/extra_files/extensions/src/solarized-dark-theme.json
deleted file mode 100644
index 5e3f43e..0000000
--- a/sources/extra_files/extensions/src/solarized-dark-theme.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "identifier": "org.stndardnotes.solarized-dark-theme",
-  "name": "Solarized Dark Theme",
-  "content_type": "SN|Theme",
-  "area": "theme",
-  "version": "1.2.1",
-  "description": "The perfect theme for any time.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/solarized-theme/dist/dist.css",
-  "download_url": "https://github.com/sn-extensions/solarized-dark-theme/archive/1.2.1.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/solarized-dark-theme.json",
-  "dock_icon":{
-    "type":"circle",
-    "background_color":"#2AA198",
-    "foreground_color":"#ffffff",
-    "border_color":"#2AA198"
-  }
-}
diff --git a/sources/extra_files/extensions/src/titanium-theme.json b/sources/extra_files/extensions/src/titanium-theme.json
deleted file mode 100644
index 0b20079..0000000
--- a/sources/extra_files/extensions/src/titanium-theme.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "identifier": "org.stndardnotes.titanium-theme",
-  "name": "Titanium Theme",
-  "content_type": "SN|Theme",
-  "area": "theme",
-  "version": "1.2.2",
-  "description": "Light on the eyes, heavy on the spirit.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/titanium-theme/dist/dist.css", 
-  "download_url": "https://github.com/sn-extensions/titanium-theme/archive/1.2.2.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/titanium-theme.json",
-  "dock_icon":{
-    "type":"circle",
-    "background_color":"#6e2b9e",
-    "foreground_color":"#ffffff",
-    "border_color":"#6e2b9e"
-  }
-}
diff --git a/sources/extra_files/extensions/src/token-vault.json b/sources/extra_files/extensions/src/token-vault.json
deleted file mode 100644
index cf7ee0b..0000000
--- a/sources/extra_files/extensions/src/token-vault.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.stndardnotes.token-vault",
-  "name": "Token Vault",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.0.10",
-  "description": "Use Standard Notes on both desktop and mobile as your authenticator app. TokenVault handles your 2FA secrets so that you never lose them again, or have to start over when you get a new device.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/token-vault/dist/index.html", 
-  "download_url": "https://github.com/sn-extensions/token-vault/archive/1.0.10.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/token-vault.json"
-}
diff --git a/sources/extra_files/extensions/src/vim-editor.json b/sources/extra_files/extensions/src/vim-editor.json
deleted file mode 100644
index cfdcce7..0000000
--- a/sources/extra_files/extensions/src/vim-editor.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "identifier": "org.stndardnotes.vim-editor",
-  "name": "Vim Editor",
-  "content_type": "SN|Component",
-  "area": "editor-editor",
-  "version": "1.3.7",
-  "description": "A code editor with Vim key bindings.",
-  "url": "https://__DOMAIN__PATH__/extensions/src/vim-editor/index.html", 
-  "download_url": "https://github.com/sn-extensions/vim-editor/archive/1.3.7.zip",
-  "latest_url": "https://__DOMAIN__PATH__/extensions/src/vim-editor.json"
-}
diff --git a/sources/extra_files/help/index.html b/sources/extra_files/help/index.html
deleted file mode 100644
index fe55864..0000000
--- a/sources/extra_files/help/index.html
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-	
-		
-		 Standard Notes - Syncing Server 
-		
-	
-	
-		

Standard Notes - Syncing Server

-

Add https://__DOMAIN____PATH__/ as Sync Server Domain in the Advanced Options to use this Syncing Server.

-
-

- You should know: -

-
    -
  1. - Your notes are fully encrypted on your device before they're ever sent to our servers.
    - This means even we can't read the contents of your notes. -
  2. -
  3. - Standard Notes is available on all your devices. - -
  4. -
-

- Install instructions for Extensions: -

-
    -
  1. - Open the Standard Notes web or Desktop app -
  2. -
  3. - Press Extensions in the button left corner -
  4. -
  5. - Enter https://__DOMAIN____PATH__/extensions/repo.json in the textbox. -
  6. -
  7. - Press the Submit Code button. -
  8. -
  9. - Now you can see Editors, Themes and Components which you can install -
  10. -
-
- - -