1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/outline_ynh.git synced 2024-09-03 19:56:12 +02:00

Merge pull request #85 from YunoHost-Apps/v2

V2
This commit is contained in:
Limezy 2024-02-15 09:28:12 +07:00 committed by GitHub
commit 296c5ed717
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 585 additions and 801 deletions

View file

@ -16,43 +16,22 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
## Overview ## Overview
The fastest wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible. Outline is a wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible.
### Features ### Features
- Fully working installation of Outline wiki - Fully working installation of Outline wiki
- Including a Dex server to connect to Yunohost's LDAP userbase using an OIDC auth flow - Including a Dex server to connect to YunoHost's LDAP userbase using an OIDC auth flow
- Using Yunohost's built-in SMTP server for notifications - Using Yunohost's built-in SMTP server for notifications
**Shipped version:** 0.74.0~ynh1 **Shipped version:** 0.75.0~ynh1
**Demo:** https://app.getoutline.com/create **Demo:** https://app.getoutline.com/create
## Screenshots ## Screenshots
![Screenshot of Outline](./doc/screenshots/outline_screenshot.png) ![Screenshot of Outline](./doc/screenshots/screenshot.png)
## Disclaimers / important information
### Not totally free licence
Outline is a softwared licenced under [BUSL 1.1 licence](https://spdx.org/licenses/BUSL-1.1.html).
⚠️ That licence **is not totally free**. Please read it very carefully if you have any commercial use in mind.
The Outline version shipped with this package (v0.73.1) will be released under Apache-2.0 licence [after August 18th 2027](https://github.com/outline/outline/blob/ebeb201a9f48e2c6b619a0d152e051946849aa10/LICENSE).
### Known limitations
1. The app can now run in the CI server and reach level 8. However, it is still very young and not broadly tested. **Please use it with extreme care if it's on a prod server**
2. The app requires [Dex app](https://github.com/YunoHost-apps/dex_ynh) to be installed (Dex installation and setup is automatic, though)
3. The app is requiring two domains including one fully dedicated (one for Dex, one for Outline)
4. ARM architectures are not yet supported (But it should be achievable soon)
5. Because it's built from sources, the app requires an important amount of RAM, disk and time to install properly
### How to create an admin user
The first user to login will automatically be granted admin rights
You can then change the user rights by default and/or change the admin user afterwards from the Outline settings page
## :red_circle: Antifeatures ## :red_circle: Antifeatures

View file

@ -16,43 +16,21 @@ Si vous navez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po
## Vue densemble ## Vue densemble
The fastest wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible. Outile est un wiki et la base de connaissances les plus rapides pour les équipes en pleine croissance. Beau, riche en fonctionnalités et compatible avec les démarques.
### Features ### Caractéristiques
- Fully working installation of Outline wiki - Installation entièrement fonctionnelle du wiki Outline
- Including a Dex server to connect to Yunohost's LDAP userbase using an OIDC auth flow - Y compris un serveur Dex pour se connecter à la base d'utilisateurs LDAP de YunoHost à l'aide d'un flux d'authentification OIDC
- Using Yunohost's built-in SMTP server for notifications - Utilisation du serveur SMTP intégré de Yunohost pour les notifications
**Version incluse :** 0.75.0~ynh1
**Version incluse :** 0.74.0~ynh1
**Démo :** https://app.getoutline.com/create **Démo :** https://app.getoutline.com/create
## Captures décran ## Captures décran
![Capture décran de Outline](./doc/screenshots/outline_screenshot.png) ![Capture décran de Outline](./doc/screenshots/screenshot.png)
## Avertissements / informations importantes
### Not totally free licence
Outline is a softwared licenced under [BUSL 1.1 licence](https://spdx.org/licenses/BUSL-1.1.html).
⚠️ That licence **is not totally free**. Please read it very carefully if you have any commercial use in mind.
The Outline version shipped with this package (v0.73.1) will be released under Apache-2.0 licence [after August 18th 2027](https://github.com/outline/outline/blob/ebeb201a9f48e2c6b619a0d152e051946849aa10/LICENSE).
### Known limitations
1. The app can now run in the CI server and reach level 8. However, it is still very young and not broadly tested. **Please use it with extreme care if it's on a prod server**
2. The app requires [Dex app](https://github.com/YunoHost-apps/dex_ynh) to be installed (Dex installation and setup is automatic, though)
3. The app is requiring two domains including one fully dedicated (one for Dex, one for Outline)
4. ARM architectures are not yet supported (But it should be achievable soon)
5. Because it's built from sources, the app requires an important amount of RAM, disk and time to install properly
### How to create an admin user
The first user to login will automatically be granted admin rights
You can then change the user rights by default and/or change the admin user afterwards from the Outline settings page
## :red_circle: Fonctions indésirables ## :red_circle: Fonctions indésirables

View file

@ -1,29 +0,0 @@
;; Test complet
; pre-install
sudo yunohost domain add dex.domain.tld
sudo yunohost domain add minio.domain.tld
; Manifest
domain="domain.tld"
is_public=1
language="fr"
dex_domain="dex.domain.tld"
dex_path="/example"
; Checks
pkg_linter=1
setup_sub_dir=1
setup_root=1
setup_nourl=0
setup_private=1
setup_public=1
upgrade=1
#upgrade=1 from_commit=f56cd7d
backup_restore=1
multi_instance=0
change_url=0
;;; Options
Email=
Notification=none
;;; Upgrade options
; commit=f56cd7d
name=Name and date of the commit.
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666&

View file

@ -10,7 +10,7 @@ UTILS_SECRET=__UTILS_SECRET__
# For production point these at your databases, in development the default # For production point these at your databases, in development the default
# should work out of the box. # should work out of the box.
DATABASE_URL=postgres://__DB_NAME__:__SECRET_KEY__@localhost:5432/__DB_NAME__ DATABASE_URL=postgres://__DB_NAME__:__DB_PWD__@localhost:5432/__DB_NAME__
DATABASE_URL_TEST=postgres://user:pass@localhost:5532/outline-test DATABASE_URL_TEST=postgres://user:pass@localhost:5532/outline-test
# Uncomment this to disable SSL for connecting to Postgres # Uncomment this to disable SSL for connecting to Postgres
PGSSLMODE=disable PGSSLMODE=disable
@ -81,8 +81,8 @@ DEBUG=cache,presenters,events,emails,mailer,utils,http,server,processors
# "you've been invited" you'll need to provide authentication for an SMTP server # "you've been invited" you'll need to provide authentication for an SMTP server
SMTP_HOST='localhost' SMTP_HOST='localhost'
SMTP_PORT='25' SMTP_PORT='25'
SMTP_USERNAME='' SMTP_USERNAME='__APP__'
SMTP_PASSWORD='' SMTP_PASSWORD='__MAIL_PWD__'
SMTP_FROM_EMAIL='__APP__@__DOMAIN__' SMTP_FROM_EMAIL='__APP__@__DOMAIN__'
SMTP_REPLY_EMAIL='webmaster@__DOMAIN__' SMTP_REPLY_EMAIL='webmaster@__DOMAIN__'
SMTP_TLS_CIPHERS= SMTP_TLS_CIPHERS=
@ -93,4 +93,4 @@ SMTP_SECURE='false'
# The default interface language. See translate.getoutline.com for a list of # The default interface language. See translate.getoutline.com for a list of
# available language codes and their rough percentage translated. # available language codes and their rough percentage translated.
DEFAULT_LANGUAGE=__LANGUAGE_KEY__ DEFAULT_LANGUAGE=__LANGUAGE__

View file

@ -1,7 +0,0 @@
SOURCE_URL=https://github.com/outline/outline/archive/e4d00783585f2a509da3565723227d2b5959a2e9.zip
SOURCE_SUM=f3394b676393e574c52aab14786b3553a58c1a87e215ae889d9c8e4d3dd6d962
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=zip
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=
SOURCE_EXTRACT=true

View file

@ -1,4 +1,6 @@
location / { #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
location __PATH__/ {
proxy_pass http://127.0.0.1:__PORT__; proxy_pass http://127.0.0.1:__PORT__;
proxy_redirect off; proxy_redirect off;
proxy_set_header Host $host; proxy_set_header Host $host;

View file

@ -6,7 +6,7 @@ After=network.target postgresql.service redis-server.service
Type=simple Type=simple
User=__APP__ User=__APP__
Group=__APP__ Group=__APP__
WorkingDirectory=__FINALPATH__/ WorkingDirectory=__INSTALL_DIR__/
Environment="NODE_ENV=production" Environment="NODE_ENV=production"
Environment="__YNH_NODE_LOAD_PATH__" Environment="__YNH_NODE_LOAD_PATH__"
ExecStart=__YNH_NPM__ start ExecStart=__YNH_NPM__ start

4
doc/ADMIN.md Normal file
View file

@ -0,0 +1,4 @@
### How to create an admin user
The first user to login will automatically be granted admin rights
You can then change the user rights by default and/or change the admin user afterwards from the Outline settings page

View file

@ -1,7 +1,7 @@
The fastest wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible. Outline is a wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible.
### Features ### Features
- Fully working installation of Outline wiki - Fully working installation of Outline wiki
- Including a Dex server to connect to Yunohost's LDAP userbase using an OIDC auth flow - Including a Dex server to connect to YunoHost's LDAP userbase using an OIDC auth flow
- Using Yunohost's built-in SMTP server for notifications - Using Yunohost's built-in SMTP server for notifications

7
doc/DESCRIPTION_fr.md Normal file
View file

@ -0,0 +1,7 @@
Outile est un wiki et la base de connaissances les plus rapides pour les équipes en pleine croissance. Beau, riche en fonctionnalités et compatible avec les démarques.
### Caractéristiques
- Installation entièrement fonctionnelle du wiki Outline
- Y compris un serveur Dex pour se connecter à la base d'utilisateurs LDAP de YunoHost à l'aide d'un flux d'authentification OIDC
- Utilisation du serveur SMTP intégré de Yunohost pour les notifications

View file

@ -1,18 +0,0 @@
### Not totally free licence
Outline is a softwared licenced under [BUSL 1.1 licence](https://spdx.org/licenses/BUSL-1.1.html).
⚠️ That licence **is not totally free**. Please read it very carefully if you have any commercial use in mind.
The Outline version shipped with this package (v0.73.1) will be released under Apache-2.0 licence [after August 18th 2027](https://github.com/outline/outline/blob/ebeb201a9f48e2c6b619a0d152e051946849aa10/LICENSE).
### Known limitations
1. The app can now run in the CI server and reach level 8. However, it is still very young and not broadly tested. **Please use it with extreme care if it's on a prod server**
2. The app requires [Dex app](https://github.com/YunoHost-apps/dex_ynh) to be installed (Dex installation and setup is automatic, though)
3. The app is requiring two domains including one fully dedicated (one for Dex, one for Outline)
4. ARM architectures are not yet supported (But it should be achievable soon)
5. Because it's built from sources, the app requires an important amount of RAM, disk and time to install properly
### How to create an admin user
The first user to login will automatically be granted admin rights
You can then change the user rights by default and/or change the admin user afterwards from the Outline settings page

6
doc/PRE_INSTALL.md Normal file
View file

@ -0,0 +1,6 @@
### Known limitations
1. This app is still young and not broadly tested. **Please use it with extreme care if it's on a prod server**
2. The app requires [Dex app](https://github.com/YunoHost-apps/dex_ynh) to be installed (Dex installation and setup is automatic, though)
3. The app is requiring two domains including one fully dedicated (one for Dex, one for Outline)
4. Because it's built from sources, the app requires an important amount of RAM, disk and time to install properly

6
doc/PRE_INSTALL_fr.md Normal file
View file

@ -0,0 +1,6 @@
### Limites connues
1. Cette app est encore jeune et n'a pas été largement testée. **Veuillez l'utiliser avec une extrême prudence s'il est sur un serveur de production**
2. L'application nécessite l'installation de [l'application Dex](https://github.com/YunoHost-apps/dex_ynh) (l'installation et la configuration de Dex sont cependant automatiques)
3. L'application nécessite deux domaines dont un entièrement dédié (un pour Dex, un pour Outline)
4. Parce qu'elle est construite à partir de sources, l'application nécessite une quantité importante de RAM, de disque et de temps pour s'installer correctement.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 KiB

View file

@ -1,70 +0,0 @@
{
"name": "Outline",
"id": "outline",
"packaging_format": 1,
"description": {
"en": "Wiki and knowledge base for teams",
"fr": "Wiki et base de connaissances pour les équipes"
},
"version": "0.74.0~ynh1",
"url": "https://www.getoutline.com",
"upstream": {
"license": "BUSL-1.1",
"website": "https://www.getoutline.com",
"demo": "https://app.getoutline.com/create",
"admindoc": "https://www.getoutline.com/developers",
"userdoc": "https://www.getoutline.com/about",
"code": "https://github.com/outline/outline"
},
"license": "BUSL-1.1",
"maintainer": {
"name": "Raoul de Limezy"
},
"requirements": {
"yunohost": ">= 11.0.9"
},
"multi_instance": false,
"services": [
"nginx"
],
"arguments": {
"install" : [
{
"name": "domain",
"type": "domain"
},
{
"name": "is_public",
"type": "boolean",
"default": true
},
{
"name": "language",
"type": "string",
"ask": {
"en": "Choose the application language",
"fr": "Choisissez la langue de l'application"
},
"choices": ["fr", "en"],
"default": "en"
},
{
"name": "dex_domain",
"type": "domain",
"ask": {
"en": "Domain for authentication. It can't be the same domain as above. Dex app will be installed and used for the authentication mechanism.",
"fr": "Domaine pour l'authentification. Il ne peut pas s'agir du même domaine que ci-dessus. L'application Dex sera installée et utilisée pour le mécanisme d'authentification."
}
},
{
"name": "dex_path",
"type": "path",
"default": "/",
"ask": {
"en": "Path for authentication URL. Please don't use 'auth' as it will break NGINX configuration.",
"fr": "Chemin de l'URL d'authentification. Veuillez ne pas utiliser 'auth' car cela casserait la configuration NGINX."
}
}
]
}
}

81
manifest.toml Normal file
View file

@ -0,0 +1,81 @@
packaging_format = 2
id = "outline"
name = "Outline"
description.en = "Wiki and knowledge base for teams"
description.fr = "Wiki et base de connaissances pour les équipes"
version = "0.75.0~ynh1"
maintainers = ["Raoul de Limezy"]
[upstream]
license = "BUSL-1.1"
website = "https://www.getoutline.com"
demo = "https://app.getoutline.com/create"
admindoc = "https://www.getoutline.com/developers"
userdoc = "https://www.getoutline.com/about"
code = "https://github.com/outline/outline"
[integration]
yunohost = ">= 11.2"
architectures = "all"
multi_instance = false
ldap = false
sso = false
disk = "50M"
ram.build = "3G"
ram.runtime = "50M"
[install]
[install.domain]
type = "domain"
[install.init_main_permission]
type = "group"
default = "visitors"
[install.language]
ask.en = "Choose the application language"
ask.fr = "Choisissez la langue de l'application"
type = "select"
choices = ["de_DE", "en_US", "es_ES", "fr_FR", "it_IT", "nl_NL", "pl_PL", "pt_PT"]
default = "fr_FR"
[install.dex_domain]
ask.en = "Domain for authentication. It can't be the same domain as above. Dex app will be installed and used for the authentication mechanism."
ask.fr = "Domaine pour l'authentification. Il ne peut pas s'agir du même domaine que ci-dessus. L'application Dex sera installée et utilisée pour le mécanisme d'authentification."
type = "domain"
[install.dex_path]
ask.en = "Path for authentication URL. Please don't use 'auth' as it will break NGINX configuration."
ask.fr = "Chemin de l'URL d'authentification. Veuillez ne pas utiliser 'auth' car cela casserait la configuration NGINX."
type = "path"
default = "/"
[resources]
[resources.sources.main]
url = "https://github.com/outline/outline/archive/2c9b01391fa12ebfd65dc01ec33bbb4941ef23bf.zip"
sha256 = "1bf8ef7fdac470ed0faeefd9575ffbac1f12d623e89d9ee244b2f83788d92933"
[resources.system_user]
allow_email = true
[resources.install_dir]
[resources.ports]
main.default = 2410
[resources.permissions]
main.url = "/"
main.auth_header = false
[resources.apt]
packages = "postgresql gawk"
extras.yarn.repo = "deb https://dl.yarnpkg.com/debian/ stable main"
extras.yarn.key = "https://dl.yarnpkg.com/debian/pubkey.gpg"
extras.yarn.packages = "yarn"
[resources.database]
type = "postgresql"

View file

@ -4,10 +4,7 @@
# COMMON VARIABLES # COMMON VARIABLES
#================================================= #=================================================
# dependencies used by the app NODEJS_VERSION=18
pkg_dependencies="postgresql"
NODEJS_VERSION=20
#================================================= #=================================================
# PERSONAL HELPERS # PERSONAL HELPERS

View file

@ -10,52 +10,11 @@
source ../settings/scripts/_common.sh source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
### Remove this function if there's nothing to clean before calling the remove script.
true
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_print_info --message="Loading installation settings..."
app=$YNH_APP_INSTANCE_NAME
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
port=$(ynh_app_setting_get --app=$app --key=port)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
#================================================= #=================================================
# DECLARE DATA AND CONF FILES TO BACKUP # DECLARE DATA AND CONF FILES TO BACKUP
#================================================= #=================================================
ynh_print_info --message="Declaring files to be backed up..." ynh_print_info --message="Declaring files to be backed up..."
### N.B. : the following 'ynh_backup' calls are only a *declaration* of what needs
### to be backuped and not an actual copy of any file. The actual backup that
### creates and fill the archive with the files happens in the core after this
### script is called. Hence ynh_backups calls takes basically 0 seconds to run.
#================================================= #=================================================
# BACKUP LOCAL STORAGE # BACKUP LOCAL STORAGE
#================================================= #=================================================
@ -66,7 +25,7 @@ ynh_backup --src_path="/var/lib/outline"
# BACKUP THE APP MAIN DIR # BACKUP THE APP MAIN DIR
#================================================= #=================================================
ynh_backup --src_path="$final_path" ynh_backup --src_path="$install_dir"
#================================================= #=================================================
# BACKUP THE NGINX CONFIGURATION # BACKUP THE NGINX CONFIGURATION
@ -112,9 +71,6 @@ ynh_backup --src_path="/etc/systemd/system/$app.service"
#================================================= #=================================================
ynh_print_info --message="Backing up the PostgreSQL database..." ynh_print_info --message="Backing up the PostgreSQL database..."
### (However, things like MySQL dumps *do* take some time to run, though the
### copy of the generated dump to the archive still happens later)
ynh_psql_dump_db --database="$db_name" > db.sql ynh_psql_dump_db --database="$db_name" > db.sql
#================================================= #=================================================

View file

@ -9,75 +9,6 @@
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# RETRIEVE ARGUMENTS
#=================================================
old_domain=$YNH_APP_OLD_DOMAIN
old_path=$YNH_APP_OLD_PATH
new_domain=$YNH_APP_NEW_DOMAIN
new_path=$YNH_APP_NEW_PATH
app=$YNH_APP_INSTANCE_NAME
#=================================================
# LOAD SETTINGS
#=================================================
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)
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
port=$(ynh_app_setting_get --app=$app --key=port)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
#=================================================
# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=1
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
# Remove the new domain config file, the remove script won't do it as it doesn't know yet its location.
ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
# Restore it if the upgrade fails
ynh_restore_upgradebackup
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# CHECK WHICH PARTS SHOULD BE CHANGED
#=================================================
change_domain=0
if [ "$old_domain" != "$new_domain" ]
then
change_domain=1
fi
change_path=0
if [ "$old_path" != "$new_path" ]
then
ynh_die "Outline has to be installed on the root of a domain"
fi
#================================================= #=================================================
# STANDARD MODIFICATIONS # STANDARD MODIFICATIONS
#================================================= #=================================================
@ -85,45 +16,31 @@ fi
#================================================= #=================================================
ynh_script_progression --message="Stopping a systemd service..." --weight=1 ynh_script_progression --message="Stopping a systemd service..." --weight=1
ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd"
#================================================= #=================================================
# MODIFY URL IN NGINX CONF # MODIFY URL IN NGINX CONF
#================================================= #=================================================
ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1 ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf ynh_change_url_nginx_config
# Change the domain for NGINX
if [ $change_domain -eq 1 ]
then
# Delete file checksum for the old conf file location
ynh_delete_file_checksum --file="$nginx_conf_path"
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
# Store file checksum for the new config file location
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
fi
#================================================= #=================================================
# UPDATING A CONFIGURATION # UPDATING A CONFIGURATION
#================================================= #=================================================
domain=$new_domain
ynh_secure_remove --file="$final_path/.env"
ynh_script_progression --message="Updating the configuration file..." --weight=1 ynh_script_progression --message="Updating the configuration file..." --weight=1
ynh_add_config --template="../conf/.env" --destination="$final_path/.env" ynh_add_config --template="../conf/.env" --destination="$install_dir/.env"
chmod 400 "$final_path/.env" chmod 400 "$install_dir/.env"
chown $app:$app "$final_path/.env" chown $app:$app "$install_dir/.env"
#================================================= #=================================================
# RUN DB MIGRATION # RUN DB MIGRATION
#================================================= #=================================================
ynh_script_progression --message="Running DB initial migration..." --weight=3 ynh_script_progression --message="Running DB initial migration..." --weight=3
pushd "$final_path" pushd "$install_dir"
ynh_use_nodejs ynh_use_nodejs
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn db:migrate ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn db:migrate
popd popd
@ -135,14 +52,7 @@ popd
#================================================= #=================================================
ynh_script_progression --message="Starting a systemd service..." --weight=1 ynh_script_progression --message="Starting a systemd service..." --weight=1
ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" ynh_systemd_action --service_name=$app --action="start" --log_path="systemd"
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
#================================================= #=================================================
# SLACK WARNING # SLACK WARNING

View file

@ -9,47 +9,18 @@
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
### Remove this function if there's nothing to clean before calling the remove script.
true
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#================================================= #=================================================
# RETRIEVE ARGUMENTS FROM THE MANIFEST # RETRIEVE ARGUMENTS FROM THE MANIFEST
#================================================= #=================================================
domain=$YNH_APP_ARG_DOMAIN
path_url="/"
is_public=$YNH_APP_ARG_IS_PUBLIC
language=$YNH_APP_ARG_LANGUAGE
if [ $language == "fr" ]; then
language_key="fr_FR"
echo "French"
else
language_key="en_US"
echo "English"
fi
secret_key=$(ynh_hex_32_random)
utils_secret=$(ynh_hex_32_random) utils_secret=$(ynh_hex_32_random)
secret_key=$(ynh_hex_32_random)
app=$YNH_APP_INSTANCE_NAME
#================================================= #=================================================
# INSTALL DEX APP FOR OAUTH2 / OIDC # INSTALL DEX APP FOR OAUTH2 / OIDC
#================================================= #=================================================
ynh_script_progression --message="Installing Dex..." --weight=18 ynh_script_progression --message="Installing Dex..." --weight=18
dex_domain=$YNH_APP_ARG_DEX_DOMAIN
dex_path=$YNH_APP_ARG_DEX_PATH
oidc_secret=$(ynh_hex_32_random) oidc_secret=$(ynh_hex_32_random)
oidc_name="Outline" oidc_name="Outline"
oidc_callback="$domain/auth/oidc.callback" oidc_callback="$domain/auth/oidc.callback"
@ -58,7 +29,7 @@ if yunohost app list | grep -q "$YNH_APP_ARG_DEX_DOMAIN$YNH_APP_ARG_DEX_PATH"; t
ynh_die "The domain provided for Dex is already used by another app. Please chose another one !" ynh_die "The domain provided for Dex is already used by another app. Please chose another one !"
fi fi
yunohost app install https://github.com/YunoHost-Apps/dex_ynh --force --args "domain=$dex_domain&path=$dex_path&OIDC_name=$oidc_name&OIDC_secret=$oidc_secret&OIDC_callback=$oidc_callback" 2>&1 | tee dexlog.txt yunohost app install https://github.com/YunoHost-Apps/dex_ynh --force --args "domain=$dex_domain&path=$dex_path&oidc_name=$oidc_name&oidc_secret=$oidc_secret&oidc_callback=$oidc_callback" 2>&1 | tee dexlog.txt
dex_app=$(gawk 'match($0, /Installation of (.+) completed/, app) {print app[1]}' dexlog.txt) dex_app=$(gawk 'match($0, /Installation of (.+) completed/, app) {print app[1]}' dexlog.txt)
rm dexlog.txt rm dexlog.txt
@ -74,31 +45,14 @@ else
dex_user_uri="https://$dex_domain$dex_path/userinfo" dex_user_uri="https://$dex_domain$dex_path/userinfo"
fi fi
#===================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#===================================================
ynh_script_progression --message="Validating installation parameters..." --weight=1
final_path=/var/www/$app
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
# Register (book) web path
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
#================================================= #=================================================
# STORE SETTINGS FROM MANIFEST # STORE SETTINGS FROM MANIFEST
#================================================= #=================================================
ynh_script_progression --message="Storing installation settings..." --weight=1 ynh_script_progression --message="Storing installation settings..." --weight=1
ynh_app_setting_set --app=$app --key=domain --value=$domain
ynh_app_setting_set --app=$app --key=path --value=$path_url
ynh_app_setting_set --app=$app --key=language --value=$language
ynh_app_setting_set --app=$app --key=secret_key --value=$secret_key
ynh_app_setting_set --app=$app --key=utils_secret --value=$utils_secret ynh_app_setting_set --app=$app --key=utils_secret --value=$utils_secret
ynh_app_setting_set --app=$app --key=language_key --value=$language_key ynh_app_setting_set --app=$app --key=secret_key --value=$secret_key
ynh_app_setting_set --app=$app --key=dex_app --value=$dex_app ynh_app_setting_set --app=$app --key=dex_app --value=$dex_app
ynh_app_setting_set --app=$app --key=dex_domain --value=$dex_domain
ynh_app_setting_set --app=$app --key=dex_path --value=$dex_path
ynh_app_setting_set --app=$app --key=oidc_name --value=$oidc_name ynh_app_setting_set --app=$app --key=oidc_name --value=$oidc_name
ynh_app_setting_set --app=$app --key=oidc_secret --value=$oidc_secret ynh_app_setting_set --app=$app --key=oidc_secret --value=$oidc_secret
ynh_app_setting_set --app=$app --key=oidc_callback --value=$oidc_callback ynh_app_setting_set --app=$app --key=oidc_callback --value=$oidc_callback
@ -106,17 +60,6 @@ ynh_app_setting_set --app=$app --key=dex_auth_uri --value=$dex_auth_uri
ynh_app_setting_set --app=$app --key=dex_token_uri --value=$dex_token_uri ynh_app_setting_set --app=$app --key=dex_token_uri --value=$dex_token_uri
ynh_app_setting_set --app=$app --key=dex_user_uri --value=$dex_user_uri ynh_app_setting_set --app=$app --key=dex_user_uri --value=$dex_user_uri
#=================================================
# STANDARD MODIFICATIONS
#=================================================
# FIND AND OPEN A PORT
#=================================================
ynh_script_progression --message="Finding an available port..." --weight=1
# Find an available port
port=$(ynh_find_port --port=2410)
ynh_app_setting_set --app=$app --key=port --value=$port
#================================================= #=================================================
# INSTALL DEPENDENCIES # INSTALL DEPENDENCIES
#================================================= #=================================================
@ -125,29 +68,11 @@ ynh_script_progression --message="Installing dependencies..." --weight=1
# Install nodejs # Install nodejs
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1 ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1
ynh_install_app_dependencies $pkg_dependencies 2>&1
# Install Yarn
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg" 2>&1
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Configuring system user..." --weight=1
# Create a system user
ynh_system_user_create --username=$app --home_dir="$final_path"
#================================================= #=================================================
# CREATE A POSTGRESQL DATABASE # CREATE A POSTGRESQL DATABASE
#================================================= #=================================================
ynh_script_progression --message="Creating a PostgreSQL database..." --weight=1 ynh_script_progression --message="Creating a PostgreSQL database..." --weight=1
db_name=$(ynh_sanitize_dbid --db_name=$app)
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
ynh_psql_test_if_first_run
ynh_psql_setup_db --db_user=$db_name --db_name=$db_name --db_pwd=$secret_key
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --database=$db_name ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --database=$db_name
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
@ -156,13 +81,11 @@ ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --datab
#================================================= #=================================================
ynh_script_progression --message="Setting up source files..." --weight=2 ynh_script_progression --message="Setting up source files..." --weight=2
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$final_path" ynh_setup_source --dest_dir="$install_dir"
chmod 750 "$final_path" chmod -R o-rwx "$install_dir"
chmod -R o-rwx "$final_path" chown -R $app:www-data "$install_dir"
chown -R $app:www-data "$final_path"
#================================================= #=================================================
# SETUP LOCAL STORAGE # SETUP LOCAL STORAGE
@ -179,18 +102,28 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=1
# Create a dedicated NGINX config # Create a dedicated NGINX config
ynh_add_nginx_config ynh_add_nginx_config
# Create a dedicated systemd config
ynh_add_systemd_config
# Use logrotate to manage application logfile(s)
ynh_use_logrotate
cron_path="/etc/cron.d/$app"
ynh_add_config --template="../conf/outline.cron" --destination="$cron_path"
chown root: "$cron_path"
chmod 644 "$cron_path"
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
#================================================= #=================================================
# BUILD YARN DEPENDENCIES # BUILD YARN DEPENDENCIES
#================================================= #=================================================
ynh_script_progression --message="Building $app. This can be very long, be patient !" --weight=18
pushd "$final_path" pushd "$install_dir"
ynh_use_nodejs ynh_use_nodejs
ynh_script_progression --message="Fetching Yarn production dependencies... This can be very long, be patient !" --weight=18
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --frozen-lockfile --network-timeout 1000000000 2>&1 ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --frozen-lockfile --network-timeout 1000000000 2>&1
ynh_script_progression --message="Building... This can be very long, be patient !" --weight=18 ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3200" yarn build 2>&1
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3900" yarn build 2>&1
ynh_script_progression --message="Cleaning cache... " --weight=3
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn cache clean 2>&1 ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn cache clean 2>&1
popd popd
@ -199,81 +132,28 @@ popd
#================================================= #=================================================
ynh_script_progression --message="Adding a configuration file..." --weight=1 ynh_script_progression --message="Adding a configuration file..." --weight=1
ynh_add_config --template="../conf/.env" --destination="$final_path/.env" ynh_add_config --template="../conf/.env" --destination="$install_dir/.env"
chmod 400 "$final_path/.env" chmod 400 "$install_dir/.env"
chown $app:$app "$final_path/.env" chown $app:$app "$install_dir/.env"
#================================================= #=================================================
# RUN DB MIGRATION # RUN DB MIGRATION
#================================================= #=================================================
ynh_script_progression --message="Running DB initial migration..." --weight=3 ynh_script_progression --message="Running DB initial migration..." --weight=3
pushd "$final_path" pushd "$install_dir"
ynh_use_nodejs ynh_use_nodejs
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn db:migrate ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn db:migrate
popd popd
#=================================================
# SETUP SYSTEMD
#=================================================
ynh_script_progression --message="Configuring a systemd service..." --weight=1
# Create a dedicated systemd config
ynh_add_systemd_config
#=================================================
# GENERIC FINALIZATION
#=================================================
# SETUP LOGROTATE
#=================================================
ynh_script_progression --message="Configuring log rotation..." --weight=1
# Use logrotate to manage application logfile(s)
ynh_use_logrotate
#=================================================
# ADD A CRON JOB
#=================================================
cron_path="/etc/cron.d/$app"
ynh_add_config --template="../conf/outline.cron" --destination="$cron_path"
chown root: "$cron_path"
chmod 644 "$cron_path"
#=================================================
# INTEGRATE SERVICE IN YUNOHOST
#=================================================
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
#================================================= #=================================================
# START SYSTEMD SERVICE # START SYSTEMD SERVICE
#================================================= #=================================================
ynh_script_progression --message="Starting a systemd service..." --weight=1 ynh_script_progression --message="Starting a systemd service..." --weight=1
# Start a systemd service # Start a systemd service
ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" ynh_systemd_action --service_name=$app --action="start" --log_path="systemd"
#=================================================
# SETUP SSOWAT
#=================================================
ynh_script_progression --message="Configuring permissions..." --weight=1
# Make app public if necessary
if [ $is_public -eq 1 ]
then
ynh_permission_update --permission="main" --add="visitors"
fi
ynh_permission_url --permission="main" --auth_header=false
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT

View file

@ -9,31 +9,6 @@
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
port=$(ynh_app_setting_get --app=$app --key=port)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
#================================================= #=================================================
# STANDARD REMOVE # STANDARD REMOVE
#================================================= #=================================================
@ -47,91 +22,26 @@ then
yunohost service remove $app yunohost service remove $app
fi fi
#=================================================
# STOP AND REMOVE SERVICE
#=================================================
ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1
# Remove the dedicated systemd config # Remove the dedicated systemd config
ynh_remove_systemd_config ynh_remove_systemd_config
#=================================================
# REMOVE LOGROTATE CONFIGURATION
#=================================================
ynh_script_progression --message="Removing logrotate configuration..." --weight=1
# Remove the app-specific logrotate config # Remove the app-specific logrotate config
ynh_remove_logrotate ynh_remove_logrotate
#=================================================
# REMOVE THE POSTGRESQL DATABASE
#=================================================
ynh_script_progression --message="Removing the PostgreSQL database..."
# Remove a database if it exists, along with the associated user
ynh_psql_remove_db --db_user=$db_name --db_name=$db_name
#=================================================
# REMOVE DEPENDENCIES
#=================================================
ynh_script_progression --message="Removing dependencies..." --weight=1
# Remove metapackage and its dependencies
ynh_remove_app_dependencies
ynh_remove_nodejs ynh_remove_nodejs
#=================================================
# REMOVE APP MAIN DIR
#=================================================
ynh_script_progression --message="Removing app main directory..." --weight=1
# Remove the app directory securely
ynh_secure_remove --file="$final_path"
#=================================================
# REMOVE DEX APP
#=================================================
ynh_script_progression --message="Removing Dex app used for Outline auth..." --weight=1
yunohost app remove $dex_app yunohost app remove $dex_app
#=================================================
# REMOVE LOCAL STORAGE
#=================================================
ynh_script_progression --message="Removing Outline local storage..." --weight=1
ynh_secure_remove --file="/var/lib/outline" ynh_secure_remove --file="/var/lib/outline"
#=================================================
# REMOVE NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1
# Remove the dedicated NGINX config # Remove the dedicated NGINX config
ynh_remove_nginx_config ynh_remove_nginx_config
#=================================================
# SPECIFIC REMOVE
#=================================================
# REMOVE VARIOUS FILES
#=================================================
ynh_script_progression --message="Removing various files..." --weight=1
# Remove a cron file # Remove a cron file
ynh_secure_remove --file="/etc/cron.d/$app" ynh_secure_remove --file="/etc/cron.d/$app"
#=================================================
# GENERIC FINALIZATION
#=================================================
# REMOVE DEDICATED USER
#=================================================
ynh_script_progression --message="Removing the dedicated system user..." --weight=1
# Delete a system user
ynh_system_user_delete --username=$app
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================
ynh_script_progression --message="If you don't need it anymore, don't forget to remove the MinIO app !"
ynh_script_progression --message="Removal of $app completed" --last ynh_script_progression --message="Removal of $app completed" --last

View file

@ -10,50 +10,6 @@
source ../settings/scripts/_common.sh source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
#### Remove this function if there's nothing to clean before calling the remove script.
true
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
port=$(ynh_app_setting_get --app=$app --key=port)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
#=================================================
# CHECK IF THE APP CAN BE RESTORED
#=================================================
ynh_script_progression --message="Validating restoration parameters..." --weight=1
test ! -d $final_path \
|| ynh_die --message="There is already a directory: $final_path"
#================================================= #=================================================
# CHECK IF DEX IS INSTALLED, IF NOT INSTALL IT # CHECK IF DEX IS INSTALLED, IF NOT INSTALL IT
#================================================= #=================================================
@ -65,41 +21,22 @@ if ! yunohost app list | grep -q "id: $dex_app"; then
if yunohost app list | grep -q "$dex_domain$dex_path"; then if yunohost app list | grep -q "$dex_domain$dex_path"; then
ynh_die "The domain provided for Dex is already used by another app. Please chose another one !" ynh_die "The domain provided for Dex is already used by another app. Please chose another one !"
fi fi
yunohost app install https://github.com/YunoHost-Apps/dex_ynh --force --args "domain=$dex_domain&path=$dex_path&OIDC_name=$oidc_name&OIDC_secret=$oidc_secret&OIDC_callback=$oidc_callback" yunohost app install https://github.com/YunoHost-Apps/dex_ynh --force --args "domain=$dex_domain&path=$dex_path&oidc_name=$oidc_name&oidc_secret=$oidc_secret&oidc_callback=$oidc_callback"
fi fi
#=================================================
# STANDARD RESTORATION STEPS
#=================================================
# RESTORE THE NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring the NGINX configuration..." --weight=1
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#=================================================
# RECREATE THE DEDICATED USER
#=================================================
ynh_script_progression --message="Recreating the dedicated system user..." --weight=1
# Create the dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#================================================= #=================================================
# RESTORE THE APP MAIN DIR # RESTORE THE APP MAIN DIR
#================================================= #=================================================
ynh_script_progression --message="Restoring the app main directory..." --weight=1 ynh_script_progression --message="Restoring the app main directory..." --weight=1
ynh_restore_file --origin_path="$final_path" ynh_restore_file --origin_path="$install_dir"
chmod 750 "$final_path" chmod -R o-rwx "$install_dir"
chmod -R o-rwx "$final_path" chown -R $app:www-data "$install_dir"
chown -R $app:www-data "$final_path"
#================================================= #=================================================
# RESTORE LOCAL STORAGE # RESTORE LOCAL STORAGE
#================================================= #=================================================
ynh_script_progression --message="Restoring the app local storage..." --weight=1 ynh_script_progression --message="Restoring the app local storage..." --weight=1
ynh_restore_file --origin_path="/var/lib/outline" ynh_restore_file --origin_path="/var/lib/outline"
@ -107,6 +44,13 @@ ynh_restore_file --origin_path="/var/lib/outline"
chmod -R o-rwx "/var/lib/outline" chmod -R o-rwx "/var/lib/outline"
chown -R $app:www-data "/var/lib/outline" chown -R $app:www-data "/var/lib/outline"
#=================================================
# RESTORE THE POSTGRESQL DATABASE
#=================================================
ynh_script_progression --message="Restoring the PostgreSQL database..." --weight=6
ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name
#================================================= #=================================================
# SPECIFIC RESTORATION # SPECIFIC RESTORATION
#================================================= #=================================================
@ -117,84 +61,38 @@ ynh_script_progression --message="Reinstalling dependencies..." --weight=1
# Install nodejs # Install nodejs
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1 ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1
ynh_install_app_dependencies $pkg_dependencies 2>&1 ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
# Install Yarn
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
#=================================================
# RESTORE THE POSTGRESQL DATABASE
#=================================================
ynh_script_progression --message="Restoring the PostgreSQL database..." --weight=6
ynh_psql_test_if_first_run
ynh_psql_setup_db --db_user=$db_name --db_name=$db_name --db_pwd=$secret_key
ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name
#=================================================
# UPDATING A CONFIGURATION
#=================================================
ynh_secure_remove --file="$final_path/.env"
ynh_script_progression --message="Updating the configuration file..." --weight=1
ynh_add_config --template="../conf/.env" --destination="$final_path/.env"
chmod 400 "$final_path/.env"
chown $app:$app "$final_path/.env"
#=================================================
# RESTORE SYSTEMD
#=================================================
ynh_script_progression --message="Restoring the systemd configuration..." --weight=1
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
#=================================================
# RESTORE THE LOGROTATE CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1
ynh_restore_file --origin_path="/etc/logrotate.d/$app" ynh_restore_file --origin_path="/etc/logrotate.d/$app"
#=================================================
# RESTORE THE LOGS
#=================================================
ynh_script_progression --message="Restoring the logs..." --weight=1
ynh_restore_file --origin_path="/var/log/$app/$app.log" ynh_restore_file --origin_path="/var/log/$app/$app.log"
#================================================= ynh_restore_file --origin_path="/etc/cron.d/$app"
# INTEGRATE SERVICE IN YUNOHOST
#=================================================
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log" yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
#=================================================
# UPDATING A CONFIGURATION
#=================================================
ynh_script_progression --message="Updating the configuration file..." --weight=1
ynh_add_config --template="../conf/.env" --destination="$install_dir/.env"
chmod 400 "$install_dir/.env"
chown $app:$app "$install_dir/.env"
#================================================= #=================================================
# START SYSTEMD SERVICE # START SYSTEMD SERVICE
#================================================= #=================================================
ynh_script_progression --message="Starting a systemd service..." --weight=1 ynh_script_progression --message="Starting a systemd service..." --weight=1
ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" ynh_systemd_action --service_name=$app --action="start" --log_path="systemd"
#=================================================
# GENERIC FINALIZATION
#=================================================
# RELOAD NGINX AND PHP-FPM
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# RESTORE THE CRON FILE
#=================================================
ynh_script_progression --message="Restoring cron job..." --weight=1
ynh_restore_file --origin_path="/etc/cron.d/$app"
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================

View file

@ -9,54 +9,12 @@
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
port=$(ynh_app_setting_get --app=$app --key=port)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
#================================================= #=================================================
# CHECK VERSION # CHECK VERSION
#================================================= #=================================================
upgrade_type=$(ynh_check_app_version_changed) upgrade_type=$(ynh_check_app_version_changed)
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1
# Ugly fix for an early mistake - to be removed with next upgrade
ynh_secure_remove --file="$final_path/outlinestorage"
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
# Restore it if the upgrade fails
ynh_restore_upgradebackup
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#================================================= #=================================================
# STANDARD UPGRADE STEPS # STANDARD UPGRADE STEPS
#================================================= #=================================================
@ -64,15 +22,7 @@ ynh_abort_if_errors
#================================================= #=================================================
ynh_script_progression --message="Stopping a systemd service..." --weight=1 ynh_script_progression --message="Stopping a systemd service..." --weight=1
ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd"
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1
# Create a dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#================================================= #=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE # DOWNLOAD, CHECK AND UNPACK SOURCE
@ -83,15 +33,11 @@ then
ynh_script_progression --message="Upgrading source files..." --weight=1 ynh_script_progression --message="Upgrading source files..." --weight=1
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_secure_remove --file="$final_path" ynh_setup_source --dest_dir="$install_dir"
ynh_setup_source --dest_dir="$final_path"
fi fi
ynh_script_progression --message="Done" --weight=1 chmod -R o-rwx "$install_dir"
chown -R $app:www-data "$install_dir"
chmod 750 "$final_path"
chmod -R o-rwx "$final_path"
chown -R $app:www-data "$final_path"
#======================================================= #=======================================================
# MIGRATE MINIO BUCKET IF UPGRADING FROM AN OLD VERSION # MIGRATE MINIO BUCKET IF UPGRADING FROM AN OLD VERSION
@ -102,11 +48,6 @@ if ynh_compare_current_package_version --comparison le --version 0.69.2.2~ynh1
then then
ynh_script_progression --message="Migrating MinIO data to local directory" ynh_script_progression --message="Migrating MinIO data to local directory"
minio_domain=$(ynh_app_setting_get --app=$app --key=minio_domain)
minio_admin=$(ynh_app_setting_get --app=$app --key=minio_admin)
minio_password=$(ynh_app_setting_get --app=$app --key=minio_password)
mc_path=$(ynh_app_setting_get --app=$app --key=mc_path)
mkdir -p "/var/lib/$app/data" mkdir -p "/var/lib/$app/data"
chown -R minio:www-data "/var/lib/$app" chown -R minio:www-data "/var/lib/$app"
ynh_exec_warn_less sudo -u minio $mc_path/mc mirror --preserve "minio/outlinestorage" "/var/lib/$app/data" ynh_exec_warn_less sudo -u minio $mc_path/mc mirror --preserve "minio/outlinestorage" "/var/lib/$app/data"
@ -130,31 +71,18 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." -
# Create a dedicated NGINX config # Create a dedicated NGINX config
ynh_add_nginx_config ynh_add_nginx_config
#=================================================
# UPGRADE DEPENDENCIES
#=================================================
ynh_script_progression --message="Upgrading dependencies..." --weight=1
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
# Install Nodejs # Install Nodejs
ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1 ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$NODEJS_VERSION
# Install Yarn
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg" 2>&1
#================================================= #=================================================
# UPGRADE YARN DEPENDENCIES # UPGRADE YARN DEPENDENCIES
#================================================= #=================================================
ynh_script_progression --message="Building Yarn dependencies... This can be very long, be patient !" --weight=10 ynh_script_progression --message="Building $app. This can be very long, be patient !" --weight=10
pushd "$final_path" pushd "$install_dir"
ynh_use_nodejs ynh_use_nodejs
ynh_script_progression --message="Fetching Yarn production dependencies... This can be very long, be patient !" --weight=18
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --frozen-lockfile --network-timeout 1000000000 2>&1 ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --frozen-lockfile --network-timeout 1000000000 2>&1
ynh_script_progression --message="Building... This can be very long, be patient !" --weight=18
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3900" yarn build 2>&1 ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3900" yarn build 2>&1
ynh_script_progression --message="Cleaning cache... " --weight=3
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn cache clean 2>&1 ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn cache clean 2>&1
popd popd
@ -163,17 +91,17 @@ popd
#================================================= #=================================================
ynh_script_progression --message="Adding a configuration file..." --weight=1 ynh_script_progression --message="Adding a configuration file..." --weight=1
ynh_add_config --template="../conf/.env" --destination="$final_path/.env" ynh_add_config --template="../conf/.env" --destination="$install_dir/.env"
chmod 400 "$final_path/.env" chmod 400 "$install_dir/.env"
chown $app:$app "$final_path/.env" chown $app:$app "$install_dir/.env"
#================================================= #=================================================
# RUN DB MIGRATION # RUN DB MIGRATION
#================================================= #=================================================
ynh_script_progression --message="Running DB initial migration..." ynh_script_progression --message="Running DB initial migration..."
pushd "$final_path" pushd "$install_dir"
ynh_use_nodejs ynh_use_nodejs
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_ENV=production yarn db:migrate ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_ENV=production yarn db:migrate
popd popd
@ -186,30 +114,14 @@ ynh_script_progression --message="Upgrading systemd configuration..." --weight=1
# Create a dedicated systemd config # Create a dedicated systemd config
ynh_add_systemd_config ynh_add_systemd_config
#=================================================
# GENERIC FINALIZATION
#=================================================
# SETUP LOGROTATE
#=================================================
ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1
# Use logrotate to manage app-specific logfile(s) # Use logrotate to manage app-specific logfile(s)
ynh_use_logrotate --non-append ynh_use_logrotate --non-append
#=================================================
# UPDATE THE CRON JOB
#=================================================
cron_path="/etc/cron.d/$app" cron_path="/etc/cron.d/$app"
ynh_add_config --template="../conf/outline.cron" --destination="$cron_path" ynh_add_config --template="../conf/outline.cron" --destination="$cron_path"
chown root: "$cron_path" chown root: "$cron_path"
chmod 644 "$cron_path" chmod 644 "$cron_path"
#=================================================
# INTEGRATE SERVICE IN YUNOHOST
#=================================================
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log" yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
#================================================= #=================================================
@ -217,14 +129,7 @@ yunohost service add $app --description="Outline server" --log="/var/log/$app/$a
#================================================= #=================================================
ynh_script_progression --message="Starting a systemd service..." --weight=1 ynh_script_progression --message="Starting a systemd service..." --weight=1
ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" ynh_systemd_action --service_name=$app --action="start" --log_path="systemd"
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT

371
sources/patches/diff.txt Normal file
View file

@ -0,0 +1,371 @@
diff --git a/app/components/Icons/OutlineIcon.tsx b/app/components/Icons/OutlineIcon.tsx
index bb7f29ce7..70db50bcd 100644
--- a/app/components/Icons/OutlineIcon.tsx
+++ b/app/components/Icons/OutlineIcon.tsx
@@ -22,7 +22,10 @@ export default function OutlineIcon({
viewBox={cover ? "2 2 20 20" : "0 0 24 24"}
version="1.1"
>
- <path d="M14.6667 20.2155V20.7163C14.6667 21.4253 14.0697 22 13.3333 22C13.1044 22 12.8792 21.9432 12.6797 21.8351L4.67965 17.5028C4.25982 17.2754 4 16.8478 4 16.384V7.61623C4 7.15248 4.25982 6.72478 4.67965 6.49742L12.6797 2.16508C13.3215 1.81751 14.1344 2.03666 14.4954 2.65456C14.6077 2.8467 14.6667 3.06343 14.6667 3.28388V3.78471L15.6169 3.51027C16.3222 3.30655 17.0655 3.69189 17.2771 4.37093C17.3144 4.49059 17.3333 4.61486 17.3333 4.73979V5.26091L18.5013 5.12036C19.232 5.03242 19.8984 5.53141 19.9897 6.23488C19.9966 6.2877 20 6.34088 20 6.3941V17.6061C20 18.3151 19.403 18.8898 18.6667 18.8898C18.6114 18.8898 18.5561 18.8865 18.5013 18.8799L17.3333 18.7393V19.2604C17.3333 19.9694 16.7364 20.5441 16 20.5441C15.8702 20.5441 15.7412 20.5259 15.6169 20.49L14.6667 20.2155ZM14.6667 18.8753L16 19.2604V4.73979L14.6667 5.12488V18.8753ZM17.3333 6.55456V17.4457L18.6667 17.6061V6.3941L17.3333 6.55456ZM5.33333 7.61623V16.384L13.3333 20.7163V3.28388L5.33333 7.61623ZM6.66667 8.47006L8 7.82823V16.172L6.66667 15.5302V8.47006Z" />
+ <path
+ d="m 20.289859,11.238917 c 1.1839,-0.602335 1.765465,-1.4746827 1.765465,-2.6378124 0,-0.9346579 -0.332322,-1.7031547 -0.996968,-2.2847194 -0.685416,-0.6023353 -1.557763,-0.913888 -2.617042,-0.913888 -1.350062,0 -2.388571,0.3946336 -3.136297,1.1839 -0.643876,0.6854159 -1.14236,1.495453 -1.433142,2.4508809 -0.290783,0.9761979 -0.436174,2.2639489 -0.436174,3.8424829 v 8.017288 c 0,1.495452 -0.145391,2.533961 -0.436174,3.136296 h 2.907825 c 0.270012,-0.685416 0.415404,-1.723925 0.415404,-3.136296 v -1.370832 c 0.602335,0.373863 1.24621,0.540025 1.931626,0.540025 1.246211,0 2.305489,-0.415404 3.177837,-1.246211 1.017739,-0.976198 1.516223,-2.222409 1.516223,-3.738632 0,-1.993936 -0.893118,-3.260917 -2.679353,-3.800942 z M 16.322756,9.4942219 c 0,-1.1839 0.08308,-2.035477 0.270012,-2.5339614 0.207702,-0.6231053 0.623105,-0.9138877 1.22544,-0.9138877 0.456944,0 0.810037,0.353093 1.059279,1.0592788 0.207702,0.581565 0.290783,1.2877513 0.290783,2.097788 0,0.3530929 -0.02077,0.7061859 -0.103851,1.0385084 -0.103851,0.436174 -0.228472,0.664646 -0.373863,0.664646 l -0.934658,-0.186931 c -0.664646,0 -0.996969,0.186931 -0.996969,0.560794 0,0.353093 0.270012,0.540025 0.830808,0.540025 l 0.893117,-0.186932 c 0.228472,0 0.498484,0.270013 0.768496,0.768497 0.415404,0.747726 0.623106,1.682384 0.623106,2.866284 0,1.474682 -0.103851,2.492421 -0.311553,3.094756 -0.249242,0.706186 -0.747726,1.059279 -1.474682,1.059279 -0.789267,0 -1.391602,-0.373863 -1.765465,-1.14236 z M 4.7941133,15.254891 Q 4.50597,15.041916 4.2303546,14.929164 q -0.2630873,-0.12528 -0.6389264,-0.12528 -0.400895,0 -0.9395978,0.150336 -0.5261747,0.137807 -1.3530207,0.425951 -0.087696,-0.0877 -0.1879196,-0.238032 Q 1.0231943,14.991803 0.98561039,14.82894 1.3739774,14.528269 1.8500403,14.190013 2.3386312,13.851758 2.9023899,13.500975 2.4639109,13.024912 2.1632396,12.624017 1.8625683,12.223122 1.6746488,11.884867 1.4867292,11.534084 1.3990334,11.208357 q -0.075168,-0.325728 -0.075168,-0.651455 0,-0.400895 0.1127517,-0.8268457 Q 1.561897,9.2915774 1.8124565,8.7904584 2.0755438,8.2768117 2.4764389,7.687997 2.8773339,7.0866545 3.4410926,6.3475042 3.0903094,5.9716651 2.7771101,5.658466 2.4764389,5.3452666 2.2384074,5.0571236 2.012904,4.7689802 1.8750963,4.5058928 1.7498166,4.2302774 1.7498166,3.9296061 q 0,-0.3633111 0.1628636,-0.7015663 Q 2.2008235,2.6266973 2.5140228,2.0879945 2.83975,1.5367639 3.1654772,0.9730052 3.3032849,0.9354213 3.4786765,0.9604772 q 0.1753915,0.012528 0.3131992,0.0751677 -0.012528,0.1002238 -0.012528,0.2129756 0,0.1127517 0,0.2004475 0,0.2630873 0.037584,0.5136467 0.037584,0.2380315 0.1378077,0.4885909 Q 4.054963,2.701865 4.2303546,2.9774804 4.4057462,3.2530957 4.6938895,3.578823 5.2200642,4.1425816 5.808879,4.7439241 6.4102214,5.3327389 7.0240919,5.9215533 7.6379623,6.4978401 8.2518332,7.0615985 8.8657036,7.6128292 9.4294624,8.1264762 9.8303572,7.700525 10.105973,7.3747979 q 0.288143,-0.3382551 0.463534,-0.5888148 0.18792,-0.2505593 0.263088,-0.4510069 0.08769,-0.2004472 0.08769,-0.3883668 0,-0.2881434 -0.200447,-0.5387027 Q 10.531923,5.1448193 10.068388,4.7439241 9.6925497,4.4181971 9.454518,4.1926935 9.2164867,3.96719 9.0786789,3.7917984 8.9533994,3.6038789 8.9032873,3.4535433 8.8657036,3.3032076 8.8657036,3.127816 q 0,-0.3006713 0.3633112,-0.839374 0.3758391,-0.5512306 1.2778532,-1.37807665 0.100223,-0.0250559 0.263087,0.0250559 0.162863,0.0501119 0.288143,0.11275175 -0.01253,0.1252797 -0.02506,0.2129755 0,0.087696 0,0.1628636 0,0.1378077 0.03758,0.2505594 0.03758,0.1127518 0.150336,0.2505594 0.112752,0.1252797 0.313199,0.3131993 0.200448,0.1879195 0.526175,0.4760628 0.726622,0.6514545 1.014766,1.0398216 0.288143,0.375839 0.288143,0.6890381 0,0.2380317 -0.112752,0.5888148 -0.100224,0.3507831 -0.438479,0.8769578 -0.338255,0.5136467 -0.964653,1.240269 -0.613871,0.7266222 -1.641164,1.7163319 0.538702,0.4885909 0.914541,0.8519021 0.388367,0.3507827 0.663983,0.6138707 0.275615,0.263087 0.463535,0.451007 0.200447,0.187919 0.363311,0.338255 0.488591,0.451007 0.751678,0.814318 0.263087,0.363311 0.263087,0.651454 0,0.225504 -0.100223,0.463535 -0.25056,0.576287 -0.476063,1.127517 -0.225504,0.551231 -0.463535,1.165102 -0.313199,0.02506 -0.551231,-0.03758 -0.187919,-0.501119 -0.451007,-0.92707 -0.250559,-0.425951 -0.55123,-0.80179 Q 10.744899,13.200304 10.419172,12.862049 10.093445,12.523794 9.7677178,12.198066 9.1037353,11.546612 8.3270013,10.81999 7.5627949,10.093367 6.811117,9.4043289 6.0594387,8.7152906 5.3829281,8.1139482 4.7189459,7.5126054 4.242883,7.0991825 3.6916523,7.8258048 3.5037328,8.3519795 3.3283412,8.8656262 3.3283412,9.3291611 q 0,0.3758392 0.1628636,0.7642059 0.1753916,0.388367 0.5387027,0.851902 0.3758391,0.463535 0.9646538,1.027294 0.5888144,0.563759 1.4407165,1.315437 0.025055,0.06264 0,0.125279 z"
+ id="path11"
+ style="stroke-width:0.36652" />
</svg>
);
}
diff --git a/app/editor/menus/block.tsx b/app/editor/menus/block.tsx
index 301c2610d..1e6917bd8 100644
--- a/app/editor/menus/block.tsx
+++ b/app/editor/menus/block.tsx
@@ -20,6 +20,7 @@ import {
MathIcon,
DoneIcon,
EmbedIcon,
+ BookmarkedIcon,
} from "outline-icons";
import * as React from "react";
import styled from "styled-components";
@@ -195,6 +196,13 @@ export default function blockMenuItems(dictionary: Dictionary): MenuItem[] {
keywords: "notice card suggestion",
attrs: { style: "tip" },
},
+ {
+ name: "container_notice",
+ title: dictionary.bibleNotice,
+ icon: <BookmarkedIcon />,
+ keywords: "notice card bible",
+ attrs: { style: "bible" },
+ },
{
name: "separator",
},
diff --git a/app/hooks/useDictionary.ts b/app/hooks/useDictionary.ts
index 6a73e6750..15b74aa9e 100644
--- a/app/hooks/useDictionary.ts
+++ b/app/hooks/useDictionary.ts
@@ -81,6 +81,8 @@ export default function useDictionary() {
warningNotice: t("Warning notice"),
success: t("Success"),
successNotice: t("Success notice"),
+ bible: t("Bible"),
+ bibleNotice: t("Bible quote"),
insertDate: t("Current date"),
insertTime: t("Current time"),
insertDateTime: t("Current date and time"),
diff --git a/app/scenes/Document/components/Document.tsx b/app/scenes/Document/components/Document.tsx
index a231a90ee..67684d36d 100644
--- a/app/scenes/Document/components/Document.tsx
+++ b/app/scenes/Document/components/Document.tsx
@@ -532,11 +532,6 @@ class DocumentScene extends React.Component<Props> {
</Flex>
</React.Suspense>
</MaxWidth>
- {isShare &&
- !parseDomain(window.location.origin).custom &&
- !auth.user && (
- <Branding href="//www.getoutline.com?ref=sharelink" />
- )}
</Container>
{!isShare && (
<Footer>
diff --git a/app/scenes/Login/components/AuthenticationProvider.tsx b/app/scenes/Login/components/AuthenticationProvider.tsx
index 5d564453d..9e3c5b55b 100644
--- a/app/scenes/Login/components/AuthenticationProvider.tsx
+++ b/app/scenes/Login/components/AuthenticationProvider.tsx
@@ -70,7 +70,7 @@ function AuthenticationProvider(props: Props) {
<InputLarge
type="email"
name="email"
- placeholder="me@domain.com"
+ placeholder="email@domaine.fr"
value={email}
onChange={handleChangeEmail}
disabled={isSubmitting}
@@ -79,12 +79,12 @@ function AuthenticationProvider(props: Props) {
short
/>
<ButtonLarge type="submit" disabled={isSubmitting}>
- {t("Sign In")} →
+ {t("S'identifier")} →
</ButtonLarge>
</>
) : (
<ButtonLarge type="submit" icon={<EmailIcon />} fullwidth>
- {t("Continue with Email")}
+ {t("Accès membre (email)")}
</ButtonLarge>
)}
</Form>
@@ -99,7 +99,7 @@ function AuthenticationProvider(props: Props) {
icon={<PluginIcon id={id} />}
fullwidth
>
- {t("Continue with {{ authProviderName }}", {
+ {t("Accès {{ authProviderName }}", {
authProviderName: name,
})}
</ButtonLarge>
diff --git a/app/scenes/Login/index.tsx b/app/scenes/Login/index.tsx
index 9a9650b48..5357d5cf5 100644
--- a/app/scenes/Login/index.tsx
+++ b/app/scenes/Login/index.tsx
@@ -264,7 +264,7 @@ function Login({ children }: Props) {
) : (
<>
<StyledHeading as="h2" centered>
- {t("Login to {{ authProviderName }}", {
+ {t("Bienvenue sur Anthropologie Biblique", {
authProviderName: config.name || env.APP_NAME,
})}
</StyledHeading>
@@ -282,7 +282,7 @@ function Login({ children }: Props) {
{hasMultipleProviders && (
<>
<Note>
- {t("You signed in with {{ authProviderName }} last time.", {
+ {t("Vous vous êtes authentifié avec l'accès {{ authProviderName }} la dernière fois.", {
authProviderName: defaultProvider.name,
})}
</Note>
diff --git a/app/typings/styled-components.d.ts b/app/typings/styled-components.d.ts
index be368444f..ecfcae00c 100644
--- a/app/typings/styled-components.d.ts
+++ b/app/typings/styled-components.d.ts
@@ -54,6 +54,8 @@ declare module "styled-components" {
noticeWarningText: string;
noticeSuccessBackground: string;
noticeSuccessText: string;
+ noticeBibleBackground: string;
+ noticeBibleText: string;
}
interface Colors {
diff --git a/package.json b/package.json
index e0d3f56ea..fcd1ce270 100644
--- a/package.json
+++ b/package.json
@@ -160,6 +160,7 @@
"pg-tsquery": "^8.4.1",
"pluralize": "^8.0.0",
"png-chunks-extract": "^1.0.0",
+ "passport-req": "^0.1.1",
"polished": "^4.2.2",
"prosemirror-codemark": "^0.4.2",
"prosemirror-commands": "^1.5.2",
diff --git a/plugins/req/plugin.json b/plugins/req/plugin.json
new file mode 100644
index 000000000..ae7c40333
--- /dev/null
+++ b/plugins/req/plugin.json
@@ -0,0 +1,4 @@
+{
+ "name": "visiteur",
+ "description": "Adds an req compatible authentication provider."
+}
diff --git a/plugins/req/server/auth/req.ts b/plugins/req/server/auth/req.ts
new file mode 100644
index 000000000..bc03fc6d3
--- /dev/null
+++ b/plugins/req/server/auth/req.ts
@@ -0,0 +1,70 @@
+import passport from "@outlinewiki/koa-passport";
+import type { Context } from "koa";
+import Router from "koa-router";
+import { capitalize } from "lodash";
+import { Strategy as ReqStrategy } from "passport-req";
+import { slugifyDomain } from "@shared/utils/domains";
+import accountProvisioner from "@server/commands/accountProvisioner";
+import env from "@server/env";
+import passportMiddleware from "@server/middlewares/passport";
+import { User } from "@server/models";
+import { AuthenticationResult } from "@server/types";
+import {
+ StateStore,
+ getTeamFromContext,
+ getClientFromContext,
+} from "@server/utils/passport";
+
+const router = new Router();
+const providerName = "req";
+
+export const config = {
+ name: "visiteur",
+ enabled: true,
+};
+
+if (true) {
+ passport.use(
+ new ReqStrategy(
+ async function (req,done) {
+ try {
+ const domain = "domain.tld";
+ const subdomain = domain.split(".")[0];
+ const teamName = capitalize(subdomain);
+ const name = "visiteur";
+ const email = "visiteur@anthropologiebiblique.fr";
+ const result = await accountProvisioner({
+ ip: req.ip,
+ team: {
+ name: teamName,
+ domain,
+ subdomain,
+ },
+ user: {
+ name: name,
+ email: email,
+ avatarUrl: null,
+ },
+ authenticationProvider: {
+ name: providerName,
+ providerId: domain,
+ },
+ authentication: {
+ providerId: "1234",
+ accessToken: null,
+ refreshToken: null,
+ scopes: [],
+ },
+ });
+ return done(null, result.user, result);
+ } catch (err) {
+ return done(err, null);
+ }
+ }
+ )
+ );
+
+ router.get("req", passportMiddleware(providerName));
+}
+
+export default router;
\ No newline at end of file
diff --git a/server/emails/mailer.tsx b/server/emails/mailer.tsx
index f53e44b6b..bcf56efca 100644
--- a/server/emails/mailer.tsx
+++ b/server/emails/mailer.tsx
@@ -207,6 +207,7 @@ export class Mailer {
: {
rejectUnauthorized: false,
},
+ ignoreTLS:true
};
}
diff --git a/shared/editor/components/Styles.ts b/shared/editor/components/Styles.ts
index bdebcc6c0..ca670a66f 100644
--- a/shared/editor/components/Styles.ts
+++ b/shared/editor/components/Styles.ts
@@ -886,6 +886,20 @@ h6 {
}
}
+.notice-block.bible {
+ background: ${transparentize(0.9, props.theme.noticeBibleBackground)};
+ border-left: 4px solid ${props.theme.noticeBibleBackground};
+ color: ${props.theme.noticeBibleText};
+
+ .icon {
+ color: ${props.theme.noticeBibleBackground};
+ }
+
+ a {
+ color: ${props.theme.noticeBibleText};
+ }
+}
+
blockquote {
margin: 0;
padding: 8px 10px 8px 1.5em;
diff --git a/shared/editor/nodes/Notice.tsx b/shared/editor/nodes/Notice.tsx
index bd976e69b..9ee40b8d5 100644
--- a/shared/editor/nodes/Notice.tsx
+++ b/shared/editor/nodes/Notice.tsx
@@ -1,5 +1,5 @@
import Token from "markdown-it/lib/token";
-import { WarningIcon, InfoIcon, StarredIcon, DoneIcon } from "outline-icons";
+import { WarningIcon, InfoIcon, StarredIcon, BookmarkedIcon, DoneIcon } from "outline-icons";
import { wrappingInputRule } from "prosemirror-inputrules";
import { NodeSpec, Node as ProsemirrorNode, NodeType } from "prosemirror-model";
import * as React from "react";
@@ -44,6 +44,8 @@ export default class Notice extends Node {
? "warning"
: dom.className.includes("success")
? "success"
+ : dom.className.includes("bible")
+ ? "bible"
: undefined,
}),
},
@@ -93,6 +95,8 @@ export default class Notice extends Node {
component = <WarningIcon />;
} else if (node.attrs.style === "success") {
component = <DoneIcon />;
+ } else if (node.attrs.style === "bible") {
+ component = <BookmarkedIcon />;
} else {
component = <InfoIcon />;
}
diff --git a/shared/styles/theme.ts b/shared/styles/theme.ts
index 5f10aa263..137f125c9 100644
--- a/shared/styles/theme.ts
+++ b/shared/styles/theme.ts
@@ -31,6 +31,7 @@ const defaultColors: Colors = {
warning: "#f08a24",
success: "#2f3336",
info: "#a0d3e8",
+ bible: "#996633",
brand: {
red: "#FF5C80",
pink: "#FF4DFA",
@@ -96,6 +97,8 @@ const buildBaseTheme = (input: Partial<Colors>) => {
noticeSuccessBackground: colors.brand.green,
noticeSuccessText: colors.almostBlack,
tableSelectedBackground: transparentize(0.8, colors.accent),
+ noticeBibleBackground: "#996633",
+ noticeBibleText: colors.almostBlack,
breakpoints,
...colors,
...spacing,
@@ -234,6 +237,7 @@ export const buildDarkTheme = (input: Partial<Colors>): DefaultTheme => {
noticeTipText: colors.white,
noticeWarningText: colors.white,
noticeSuccessText: colors.white,
+ noticeBibleText: colors.white,
progressBarBackground: colors.slate,
scrollbarBackground: colors.black,
scrollbarThumb: colors.lightBlack,
diff --git a/yarn.lock b/yarn.lock
index c47df111a..3d7a8e387 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10290,6 +10290,14 @@ passport-oauth@1.0.x:
passport-oauth1 "1.x.x"
passport-oauth2 "1.x.x"
+passport-req@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/passport-req/-/passport-req-0.1.1.tgz#451bff1500b3d464a768d42f0762328a21236a18"
+ integrity sha512-9qmM0vD5v7jYLWxezNNCleOw+8IkVAuvOwQ6NJaUuJkdFJTR1KatXH1i5MxWgffx+libLWYLRUPtc6GHOmn+6w==
+ dependencies:
+ passport "~0.1.1"
+ pkginfo "0.2.x"
+
passport-slack-oauth2@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/passport-slack-oauth2/-/passport-slack-oauth2-1.2.0.tgz#d214a698b55a137393636a26827747f6c436dab4"
@@ -10320,6 +10328,14 @@ passport@^0.7.0:
pause "0.0.1"
utils-merge "^1.0.1"
+passport@~0.1.1:
+ version "0.1.18"
+ resolved "https://registry.yarnpkg.com/passport/-/passport-0.1.18.tgz#c8264479dcb6414cadbb66752d12b37e0b6525a1"
+ integrity sha512-qteYojKG/qth7UBbbGU7aqhe5ndJs6YaUkH2B6+7FWQ0OeyYmWknzOATpMhdoSTDcLLliq9n4Fcy1mGs80iUMw==
+ dependencies:
+ pause "0.0.1"
+ pkginfo "0.2.x"
+
passthrough-counter@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/passthrough-counter/-/passthrough-counter-1.0.0.tgz#1967d9e66da572b5c023c787db112a387ab166fa"

18
tests.toml Normal file
View file

@ -0,0 +1,18 @@
test_format = 1.0
[default]
# ------------
# Tests to run
# ------------
preinstall = """
sudo yunohost domain add dex.domain.tld
"""
# -------------------------------
# Default args to use for install
# -------------------------------
args.dex_domain="dex.domain.tld"
args.dex_path="/example"