From 49b5bf85205b9d84cf93c0f863dc3d54e5696eae Mon Sep 17 00:00:00 2001 From: Gofannon Date: Sun, 12 May 2019 15:59:55 +0200 Subject: [PATCH] Cleaning --- scripts/actions/internal_users | 86 +++++++++++++++++++++++++++------- scripts/install | 3 +- 2 files changed, 72 insertions(+), 17 deletions(-) diff --git a/scripts/actions/internal_users b/scripts/actions/internal_users index 271987b..9e24ab7 100644 --- a/scripts/actions/internal_users +++ b/scripts/actions/internal_users @@ -92,28 +92,82 @@ ynh_backup_if_checksum_is_different "$final_path/conf/local.protected.php" # Always overwrite local file with the one from package. cp conf/local.protected.php $final_path/conf -if [ $is_internal_users -eq 1 ]; -then - auth_backend="authchained" - #authchained_configuration='$conf['p lugin']['authchained']['authtypes'] = 'authldap:authplain';' - #grep -q -F '$conf['plugin']['authchained']['authtypes'] = 'authldap:authplain';' "$final_path/conf/local.protected.php" || echo 'include "/configs/projectname.conf"' >> foo.bar +if [ $is_internal_users -eq 1 ]; then + auth_backend="authchained" - # Search if configuration in "config file" is present for plugin to work - #TODO could be added straight to 'local.protected.php' file ? - grep -q -F '$conf['plugin']['authchained']['authtypes'] = 'authldap:authplain';' "$final_path/conf/local.protected.php" - if [ $? -ne 0 ]; then - # If not found, add the setting to "local.protected.php" which can only be edited by Yunohost - # \$conf needs the "\" to espace the dollar and avoid echo to interprate it as a (void) variable - echo "\$conf['plugin']['authchained']['authtypes'] = 'authldap:authplain';" >> "$final_path/conf/local.protected.php" - fi - # source: https://stackoverflow.com/questions/3557037/appending-a-line-to-a-file-only-if-it-does-not-already-exist + # Automatically install "authchained" plugin + # Allows to use multiple users backend storage : LDAP + internal DokuWiki users + # See https://www.dokuwiki.org/plugin:authchained?s[]=chained + + plugin_archive=dokuwiki-plugin-authchained.tar.gz + wget -nv --quiet 'https://github.com/rztuc/dokuwiki-plugin-authchained/archive/master.tar.gz' -O "$plugin_archive" -o /dev/null || true + + # if "file is not zero size" + if [ -s "$plugin_archive" ]; then + + tmpdir="$(ynh_smart_mktemp --min_size=1)" # Create a 1mb temporary folder + tar xzf "$plugin_archive" -C "$tmpdir" # Extract plugin to the temp folder + + # Extract the "base" field from the plugin archive to create plugin folder name + # See https://www.dokuwiki.org/devel:plugin_info + # + # 'wildcard' is used to avoid having to find the name of the subfolder + # It should not change later but who knows... + plugin_folder_name=$(cat $tmpdir/*/plugin.info.txt | grep url | awk -F ':' '{print $3}') + + # Define the path where plugin has to be installed + plugin_finalpath="$final_path/lib/plugins/$plugin_folder_name" + mkdir -p $plugin_finalpath + + # Copy plugin files to DokuWiki plugin directory + # Doesn't work with "mv" so "cp" instead (taken from "upgrade" script) + cp -a $tmpdir/*/. "$plugin_finalpath/" + + # Cleaning + ynh_secure_remove --file="$tmpdir" + + # Set filesystem rights for new plugin + chown -R $app:root $plugin_finalpath + fi else - auth_backend="authldap" + auth_backend="authldap" + # TODO: Disable/remove "authchained" + + + ##$plugins['authchained'] = 0; in plugins.local.php + # + # + ## Use a "sub process" to start a new shell to run these commands + ## Allow to use only one "cd" and to be more efficent + #( + # cd $final_path/conf + # + # cp plugins.local.php plugins.local.php.bak + # + # # Search if configuration in "config file" is present for plugin to work + # ## -F, --fixed-strings + # ## Interpret PATTERN as a list of fixed strings (instead of regular expressions), separated by newlines, any of which is to + # ## be matched. + # ## -q, --quiet, --silent + # ## Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an + # ## error was detected. Also see the -s or --no-messages option. + # grep --quiet --fixed-strings '$plugins['authchained'] = 0;' "plugins.local.php" + # if [ $? -ne 0 ]; then + # echo "not found in file" + # # If not found, add the setting to "local.protected.php" which can only be edited by Yunohost + # # "\$conf" needs the "\" to espace the dollar and avoid echo to interprate it as a (void) variable + # #echo "\$conf['plugin']['authchained']['authtypes'] = 'authldap:authplain';" >> "$final_path/conf/local.protected.php" + # else + # echo "not found in file" + # fi + # # source: https://stackoverflow.com/questions/3557037/appending-a-line-to-a-file-only-if-it-does-not-already-exist + # + #) fi + # Set the authentification backend -#ynh_replace_string "^$conf['authtype'].*" "$conf['authtype'] = '$auth_backend';" "$final_path/conf/local.protected.php" ynh_replace_string "__YNH_AUTH_BACKEND__" "$auth_backend" "$final_path/conf/local.protected.php" # Set the "admin" user ynh_replace_string "__YNH_ADMIN_USER__" "$admin" "$final_path/conf/local.protected.php" diff --git a/scripts/install b/scripts/install index 787715f..bfd7638 100755 --- a/scripts/install +++ b/scripts/install @@ -61,7 +61,8 @@ ynh_app_setting_set $app language $language # Can be changed by action script "internal_users" auth_backend='authldap' # Default backend is LDAP with Yunohost, 'authldap' for DokuWiki ynh_app_setting_set $app auth_backend $auth_backend -# Disable the 'is_internal_users' feature + +# Force disable the 'is_internal_users' feature ynh_app_setting_set $app is_internal_users 0 #=================================================