From 6b6befbe08e7afe66aa276b58b7f7a046560e50e Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sun, 7 Jul 2019 22:34:33 +0200 Subject: [PATCH 1/4] LDAP configuration --- README.md | 5 +- conf/ldap_message | 18 ++++ scripts/change_url | 2 +- scripts/install | 37 +++++++- scripts/remove | 15 ++- scripts/restore | 11 ++- scripts/upgrade | 51 +++++++--- scripts/ynh_send_readme_to_admin__2 | 140 ++++++++++++++++++++++++++++ 8 files changed, 253 insertions(+), 26 deletions(-) create mode 100644 conf/ldap_message create mode 100644 scripts/ynh_send_readme_to_admin__2 diff --git a/README.md b/README.md index 63d0510..4ae4ea0 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,9 @@ An open source, modern and powerful wiki app built on Node.js, Git and Markdown #### Multi-users support -No LDAP and HTTP auth for now but planned to be supported. -The app can be used by multiple users? +LDAP is implemented, root will receive a mail at the end of the installation or the upgrade with the informations to configure LDAP. +HTTP auth for now but planned to be supported. +The app can be used by multiple users #### Supported architectures diff --git a/conf/ldap_message b/conf/ldap_message new file mode 100644 index 0000000..4b2302a --- /dev/null +++ b/conf/ldap_message @@ -0,0 +1,18 @@ +Wikijs was successfully installed :) +Please open https://__DOMAIN____PATH_URL__ and follow the steps to setup Wiki.js + +After following the setup steps, login, create an home page, click on the upper right wheel. +In the Modules / Authentication, activate the LDAP / Active Directory and apply following parameters and click Apply: + +Strategy Configuration +LDAP_URL: ldap://localhost:389 +Admin Bind DN: uid=__LDAP_USER__,ou=users,dc=yunohost,dc=org +Admin Bind Credential: __LDAP_PASSWORD__ +Search Base: ou=users,dc=yunohost,dc=org +Search Filter: (uid={{username}}) + +Registration +Allow self-registration: Yes +Assign to group: Guest + +If you facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/wikijs_ynh \ No newline at end of file diff --git a/scripts/change_url b/scripts/change_url index 3b6441e..4b116d6 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -25,7 +25,7 @@ app=$YNH_APP_INSTANCE_NAME #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." --time --weight=1 +ynh_print_info --message="Loading installation settings..." # Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) diff --git a/scripts/install b/scripts/install index 8febf43..3637a2c 100644 --- a/scripts/install +++ b/scripts/install @@ -7,6 +7,7 @@ #================================================= source _common.sh +source ynh_send_readme_to_admin__2 source /usr/share/yunohost/helpers #================================================= @@ -29,6 +30,9 @@ is_public=$YNH_APP_ARG_IS_PUBLIC app=$YNH_APP_INSTANCE_NAME +ldap_user="${app}_ldap" +ldap_password=$(ynh_string_random --length=8) + #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= @@ -49,6 +53,9 @@ 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=is_public --value=$is_public +ynh_app_setting_set --app=$app --key=ldap_user --value=$ldap_user +ynh_app_setting_set --app=$app --key=ldap_password --value=$ldap_password + #================================================= # STANDARD MODIFICATIONS #================================================= @@ -108,6 +115,13 @@ ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # SPECIFIC SETUP +#================================================= +# CREATE LDAP USER +#================================================= +ynh_print_info --message="Creating LDAP user..." + +yunohost user create $ldap_user --firstname $app --lastname $app --mail ${ldap_user}@$domain --password $ldap_password -q 0 + #================================================= # SETUP SYSTEMD #================================================= @@ -121,18 +135,19 @@ ynh_add_systemd_config # MODIFY A CONFIG FILE #================================================= -cp -f ../conf/config.sample.yml "$final_path/config.yml" +config_file="$final_path/config.yml" +cp -f ../conf/config.sample.yml $config_file -ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/config.yml" -ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$final_path/config.yml" -ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file="$final_path/config.yml" +ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file=$config_file +ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file=$config_file +ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file=$config_file #================================================= # STORE THE CONFIG FILE CHECKSUM #================================================= # Calculate and store the config file checksum into the app settings -ynh_store_file_checksum --file="$final_path/config.yml" +ynh_store_file_checksum --file=$config_file #================================================= # GENERIC FINALIZATION @@ -177,6 +192,18 @@ ynh_print_info --message="Reloading nginx web server..." ynh_systemd_action --service_name=nginx --action=reload +#================================================= +# SEND README TO ADMIN +#================================================= +ynh_print_info --message="Sending ReadMe to admin..." + +ynh_replace_string --match_string="__LDAP_USER__" --replace_string="$ldap_user" --target_file="../conf/ldap_message" +ynh_replace_string --match_string="__LDAP_PASSWORD__" --replace_string="$ldap_password" --target_file="../conf/ldap_message" +ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="../conf/ldap_message" +ynh_replace_string --match_string="__PATH_URL__" --replace_string="$path_url" --target_file="../conf/ldap_message" + +ynh_send_readme_to_admin --app_message="../conf/ldap_message" --recipients="root" --type='install' + #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/remove b/scripts/remove index 2f5510c..5d9c264 100644 --- a/scripts/remove +++ b/scripts/remove @@ -22,6 +22,8 @@ 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) +ldap_user=$(ynh_app_setting_get --app=$app --key=ldap_user) + #================================================= # STANDARD REMOVE #================================================= @@ -29,7 +31,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= # Remove a service from the admin panel, added by `yunohost service add` -if yunohost service status $app >/dev/null 2>&1 +if ynh_exec_warn_less yunohost service status $app >/dev/null then ynh_print_info --message="Removing $app service..." yunohost service remove $app @@ -82,10 +84,19 @@ ynh_remove_nginx_config if yunohost firewall list | grep -q "\- $port$" then - ynh_script_progression --message="Closing port $port..." + ynh_print_info --message="Closing port $port..." ynh_exec_warn_less yunohost firewall disallow TCP $port fi +#================================================= +# SPECIFIC REMOVE +#================================================= +# REMOVE LDAP USER +#================================================= +ynh_print_info --message="Removing ldap user..." + +yunohost user delete $ldap_user --purge + #================================================= # GENERIC FINALIZATION #================================================= diff --git a/scripts/restore b/scripts/restore index 49bd48b..d93ba42 100644 --- a/scripts/restore +++ b/scripts/restore @@ -6,6 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= +#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers @@ -32,6 +33,8 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) +ldap_user=$(ynh_app_setting_get --app=$app --key=ldap_user) +ldap_password=$(ynh_app_setting_get --app=$app --key=ldap_password) #================================================= # CHECK IF THE APP CAN BE RESTORED @@ -83,7 +86,6 @@ ynh_print_info --message="Reinstalling dependencies..." # Define and install dependencies ynh_install_nodejs --nodejs_version="10" - ynh_install_app_dependencies $pkg_dependencies #================================================= @@ -118,6 +120,13 @@ ynh_systemd_action --service_name=$app --action=start --log_path=systemd sleep 30 +#================================================= +# CREATE LDAP USER +#================================================= +ynh_print_info --message="Creating LDAP user..." + +yunohost user create $ldap_user --firstname $app --lastname $app --mail ${ldap_user}@$domain --password $ldap_password -q 0 + #================================================= # GENERIC FINALIZATION #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index e9855f8..fade0ae 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -7,6 +7,7 @@ #================================================= source _common.sh +source ynh_send_readme_to_admin__2 source /usr/share/yunohost/helpers #================================================= @@ -25,6 +26,8 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) port=$(ynh_app_setting_get --app=$app --key=port) +ldap_user=$(ynh_app_setting_get --app=$app --key=ldap_user) +ldap_password=$(ynh_app_setting_get --app=$app --key=ldap_password) #================================================= # CHECK VERSION @@ -58,6 +61,15 @@ if [ -z "$final_path" ]; then ynh_app_setting_set --app=$app --key=final_path --value=$final_path fi +# If ldap_user doesn't exist, retrieve it or create it +if [[ -z "$ldap_user" ]]; then + ldap_user="${app}_ldap" + ldap_password=$(ynh_string_random --length=8) + ynh_app_setting_set "$app" ldap_user "$ldap_user" + ynh_app_setting_set "$app" ldap_password "$ldap_password" + yunohost user create $ldap_user --firstname $app --lastname $app --mail ${ldap_user}@$domain --password $ldap_password -q 0 +fi + # Remove yarn repository ynh_secure_remove --file="/etc/apt/sources.list.d/yarn.list" @@ -82,19 +94,12 @@ ynh_clean_setup () { # Exit if an error occurs during the execution of the script ynh_abort_if_errors -#================================================= -# CHECK THE PATH -#================================================= - -# Normalize the URL path syntax - -path_url=$(ynh_normalize_url_path --path_url=$path_url) - #================================================= # STANDARD UPGRADE STEPS #================================================= # STOP SYSTEMD SERVICE #================================================= +ynh_print_info --message="Stopping a systemd service..." ynh_systemd_action --service_name=$app --action="stop" @@ -135,23 +140,26 @@ ynh_print_info --message="Making sure dedicated system user exists..." # Create a dedicated user (if not existing) ynh_system_user_create --username=$app --home_dir="$final_path" +#================================================= +# SPECIFIC UPGRADE #================================================= # MODIFY A CONFIG FILE #================================================= -ynh_backup_if_checksum_is_different --file="$final_path/config.yml" -cp -f ../conf/config.sample.yml "$final_path/config.yml" +config_file="$final_path/config.yml" +ynh_backup_if_checksum_is_different --file=$config_file +cp -f ../conf/config.sample.yml $config_file -ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/config.yml" -ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$final_path/config.yml" -ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file="$final_path/config.yml" +ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file=$config_file +ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file=$config_file +ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file=$config_file #================================================= # STORE THE CONFIG FILE CHECKSUM #================================================= # Recalculate and store the checksum of the file for the next upgrade. -ynh_store_file_checksum --file="$final_path/config.yml" +ynh_store_file_checksum --file=$config_file #================================================= # SETUP SYSTEMD @@ -184,8 +192,9 @@ then fi #================================================= -# START SERVICE +# START SYSTEMD SERVICE #================================================= +ynh_print_info --message="Starting a systemd service..." ynh_systemd_action --service_name=$app --action="start" --log_path=systemd @@ -198,6 +207,18 @@ ynh_print_info --message="Reloading nginx web server..." ynh_systemd_action --service_name=nginx --action=reload +#================================================= +# SEND README TO ADMIN +#================================================= +ynh_print_info --message="Sending ReadMe to admin..." + +ynh_replace_string --match_string="__LDAP_USER__" --replace_string="$ldap_user" --target_file="../conf/ldap_message" +ynh_replace_string --match_string="__LDAP_PASSWORD__" --replace_string="$ldap_password" --target_file="../conf/ldap_message" +ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="../conf/ldap_message" +ynh_replace_string --match_string="__PATH_URL__" --replace_string="$path_url" --target_file="../conf/ldap_message" + +ynh_send_readme_to_admin --app_message="../conf/ldap_message" --recipients="root" --type='upgrade' + #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/ynh_send_readme_to_admin__2 b/scripts/ynh_send_readme_to_admin__2 new file mode 100644 index 0000000..06cff8c --- /dev/null +++ b/scripts/ynh_send_readme_to_admin__2 @@ -0,0 +1,140 @@ +#!/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"
+}

From 1168c040d710c3cc78e6b22eb6bffa90f39cc8ef Mon Sep 17 00:00:00 2001
From: yalh76 
Date: Tue, 9 Jul 2019 01:10:33 +0200
Subject: [PATCH 2/4] Sanitize ldap_user

---
 scripts/install           |  5 +++--
 scripts/restore           |  2 +-
 scripts/upgrade           |  2 +-
 scripts/ynh_sanitize_name | 20 ++++++++++++++++++++
 4 files changed, 25 insertions(+), 4 deletions(-)
 create mode 100644 scripts/ynh_sanitize_name

diff --git a/scripts/install b/scripts/install
index 3637a2c..189d111 100644
--- a/scripts/install
+++ b/scripts/install
@@ -8,6 +8,7 @@
 
 source _common.sh
 source ynh_send_readme_to_admin__2
+source ynh_sanitize_name
 source /usr/share/yunohost/helpers
 
 #=================================================
@@ -30,7 +31,7 @@ is_public=$YNH_APP_ARG_IS_PUBLIC
 
 app=$YNH_APP_INSTANCE_NAME
 
-ldap_user="${app}_ldap"
+ldap_user=$(ynh_sanitize_name --name="${app}ldap")
 ldap_password=$(ynh_string_random --length=8)
 
 #=================================================
@@ -120,7 +121,7 @@ ynh_system_user_create --username=$app --home_dir="$final_path"
 #=================================================
 ynh_print_info --message="Creating LDAP user..."
 
-yunohost user create $ldap_user --firstname $app --lastname $app --mail ${ldap_user}@$domain --password $ldap_password -q 0
+yunohost user create $ldap_user --firstname $ldap_user --lastname $ldap_user --mail ${ldap_user}@$domain --password $ldap_password -q 0
 
 #=================================================
 # SETUP SYSTEMD
diff --git a/scripts/restore b/scripts/restore
index d93ba42..1d0f994 100644
--- a/scripts/restore
+++ b/scripts/restore
@@ -125,7 +125,7 @@ sleep 30
 #=================================================
 ynh_print_info --message="Creating LDAP user..."
 
-yunohost user create $ldap_user --firstname $app --lastname $app --mail ${ldap_user}@$domain --password $ldap_password -q 0
+yunohost user create $ldap_user --firstname $ldap_user --lastname $ldap_user --mail ${ldap_user}@$domain --password $ldap_password -q 0
 
 #=================================================
 # GENERIC FINALIZATION
diff --git a/scripts/upgrade b/scripts/upgrade
index fade0ae..78a33d4 100644
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -63,7 +63,7 @@ fi
 
 # If ldap_user doesn't exist, retrieve it or create it
 if [[ -z "$ldap_user" ]]; then
-	ldap_user="${app}_ldap"
+	ldap_user=$(ynh_sanitize_name --name="${app}ldap")
 	ldap_password=$(ynh_string_random --length=8)
 	ynh_app_setting_set "$app" ldap_user "$ldap_user"
 	ynh_app_setting_set "$app" ldap_password "$ldap_password"
diff --git a/scripts/ynh_sanitize_name b/scripts/ynh_sanitize_name
new file mode 100644
index 0000000..ba08ed9
--- /dev/null
+++ b/scripts/ynh_sanitize_name
@@ -0,0 +1,20 @@
+# Sanitize a string intended to be the firstname lastname
+# (More specifically : removing - . and _)
+#
+# example: username=$(ynh_sanitize_name --name=$app)
+#
+# usage: ynh_sanitize_name --name=name
+# | arg: -n, --name - name to correct/sanitize
+# | ret: the corrected name
+#
+ynh_sanitize_name () {
+	# Declare an array to define the options of this helper.
+	local legacy_args=n
+	declare -Ar args_array=( [n]=name= )
+	local name
+	# Manage arguments with getopts
+	ynh_handle_getopts_args "$@"
+
+	# We should avoid having - and . in the name of databases. They are replaced by _
+	echo ${name//[-._]/}
+}
\ No newline at end of file

From 5c404af2e14729e57761b0262a203dcf446696fe Mon Sep 17 00:00:00 2001
From: yalh76 
Date: Tue, 9 Jul 2019 01:12:41 +0200
Subject: [PATCH 3/4] Update ynh_sanitize_name

---
 scripts/ynh_sanitize_name | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/scripts/ynh_sanitize_name b/scripts/ynh_sanitize_name
index ba08ed9..7d6f7c2 100644
--- a/scripts/ynh_sanitize_name
+++ b/scripts/ynh_sanitize_name
@@ -1,3 +1,5 @@
+#!/bin/bash
+
 # Sanitize a string intended to be the firstname lastname
 # (More specifically : removing - . and _)
 #

From 0015f5b6d5e5605e5d1afdc4a3fe3b06c09f3938 Mon Sep 17 00:00:00 2001
From: yalh76 
Date: Tue, 9 Jul 2019 08:30:38 +0200
Subject: [PATCH 4/4] fix ldap firstname and lastname

---
 scripts/install           |  5 ++---
 scripts/restore           |  2 +-
 scripts/upgrade           |  4 ++--
 scripts/ynh_sanitize_name | 22 ----------------------
 4 files changed, 5 insertions(+), 28 deletions(-)
 delete mode 100644 scripts/ynh_sanitize_name

diff --git a/scripts/install b/scripts/install
index 189d111..6f02f56 100644
--- a/scripts/install
+++ b/scripts/install
@@ -8,7 +8,6 @@
 
 source _common.sh
 source ynh_send_readme_to_admin__2
-source ynh_sanitize_name
 source /usr/share/yunohost/helpers
 
 #=================================================
@@ -31,7 +30,7 @@ is_public=$YNH_APP_ARG_IS_PUBLIC
 
 app=$YNH_APP_INSTANCE_NAME
 
-ldap_user=$(ynh_sanitize_name --name="${app}ldap")
+ldap_user="svc_${app}_ldap"
 ldap_password=$(ynh_string_random --length=8)
 
 #=================================================
@@ -121,7 +120,7 @@ ynh_system_user_create --username=$app --home_dir="$final_path"
 #=================================================
 ynh_print_info --message="Creating LDAP user..."
 
-yunohost user create $ldap_user --firstname $ldap_user --lastname $ldap_user --mail ${ldap_user}@$domain --password $ldap_password -q 0
+yunohost user create $ldap_user --firstname "SvcWikijsLdap" --lastname "SvcWikijsLdap" --mail ${ldap_user}@$domain --password $ldap_password -q 0
 
 #=================================================
 # SETUP SYSTEMD
diff --git a/scripts/restore b/scripts/restore
index 1d0f994..dad24bc 100644
--- a/scripts/restore
+++ b/scripts/restore
@@ -125,7 +125,7 @@ sleep 30
 #=================================================
 ynh_print_info --message="Creating LDAP user..."
 
-yunohost user create $ldap_user --firstname $ldap_user --lastname $ldap_user --mail ${ldap_user}@$domain --password $ldap_password -q 0
+yunohost user create $ldap_user --firstname "SvcWikijsLdap" --lastname "SvcWikijsLdap" --mail ${ldap_user}@$domain --password $ldap_password -q 0
 
 #=================================================
 # GENERIC FINALIZATION
diff --git a/scripts/upgrade b/scripts/upgrade
index 78a33d4..2585817 100644
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -63,11 +63,11 @@ fi
 
 # If ldap_user doesn't exist, retrieve it or create it
 if [[ -z "$ldap_user" ]]; then
-	ldap_user=$(ynh_sanitize_name --name="${app}ldap")
+	ldap_user="svc_${app}_ldap"
 	ldap_password=$(ynh_string_random --length=8)
 	ynh_app_setting_set "$app" ldap_user "$ldap_user"
 	ynh_app_setting_set "$app" ldap_password "$ldap_password"
-	yunohost user create $ldap_user --firstname $app --lastname $app --mail ${ldap_user}@$domain --password $ldap_password -q 0
+	yunohost user create $ldap_user --firstname "SvcWikijsLdap" --lastname "SvcWikijsLdap" --mail ${ldap_user}@$domain --password $ldap_password -q 0
 fi
 
 # Remove yarn repository
diff --git a/scripts/ynh_sanitize_name b/scripts/ynh_sanitize_name
deleted file mode 100644
index 7d6f7c2..0000000
--- a/scripts/ynh_sanitize_name
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-
-# Sanitize a string intended to be the firstname lastname
-# (More specifically : removing - . and _)
-#
-# example: username=$(ynh_sanitize_name --name=$app)
-#
-# usage: ynh_sanitize_name --name=name
-# | arg: -n, --name - name to correct/sanitize
-# | ret: the corrected name
-#
-ynh_sanitize_name () {
-	# Declare an array to define the options of this helper.
-	local legacy_args=n
-	declare -Ar args_array=( [n]=name= )
-	local name
-	# Manage arguments with getopts
-	ynh_handle_getopts_args "$@"
-
-	# We should avoid having - and . in the name of databases. They are replaced by _
-	echo ${name//[-._]/}
-}
\ No newline at end of file