mirror of
https://github.com/YunoHost-Apps/dokuwiki_ynh.git
synced 2024-09-03 18:26:20 +02:00
128 lines
No EOL
4.4 KiB
Bash
Executable file
128 lines
No EOL
4.4 KiB
Bash
Executable file
#!/bin/bash
|
||
|
||
# Exit on command errors and treat unset variables as an error
|
||
set -eu
|
||
|
||
if [ ! -e .fonctions ]; then
|
||
# Get file fonction if not been to the current directory
|
||
sudo cp ../settings/scripts/.fonctions ./.fonctions
|
||
sudo chmod a+rx .fonctions
|
||
fi
|
||
# Loads the generic functions usually used in the script
|
||
source .fonctions
|
||
# Source app helpers
|
||
source /usr/share/yunohost/helpers
|
||
|
||
# This is a multi-instance app, meaning it can be installed several times independently
|
||
# The id of the app as stated in the manifest is available as $YNH_APP_ID
|
||
# The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...)
|
||
# The app instance name is available as $YNH_APP_INSTANCE_NAME
|
||
# - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample
|
||
# - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2
|
||
# - ynhexample__{N} for the subsequent installations, with N=3,4, ...
|
||
# The app instance name is probably what you are interested the most, since this is
|
||
# guaranteed to be unique. This is a good unique identifier to define installation path,
|
||
# db names, ...
|
||
app=$YNH_APP_INSTANCE_NAME
|
||
|
||
# Retrieve app settings
|
||
domain=$(ynh_app_setting_get $app domain)
|
||
path=$(ynh_app_setting_get $app path)
|
||
admin=$(ynh_app_setting_get $app admin)
|
||
is_public=$(ynh_app_setting_get $app is_public)
|
||
multisite=$(ynh_app_setting_get $app multisite)
|
||
|
||
# Remove trailing slash to path
|
||
path=${path%/}
|
||
#force location to be / or /foo
|
||
location=${path:-/}
|
||
|
||
# admin default value, if not set
|
||
if [ -z "$admin" ];
|
||
then
|
||
admin=$(sudo yunohost user list | grep 'username' -m1 | awk '{print $2}')
|
||
sudo ynh_app_setting_set $app is_public -v "$is_public"
|
||
fi
|
||
|
||
# Create system user dedicace for this app
|
||
ynh_system_user_create $app
|
||
|
||
# Modify dokuwiki conf
|
||
sed -i "s@YNH_ADMIN_USER@$admin@g" ../conf/dokuwiki.php
|
||
|
||
# Copy files to the right place
|
||
final_path=/var/www/$app
|
||
sudo mkdir -p $final_path
|
||
|
||
# Get source
|
||
SETUP_SOURCE
|
||
|
||
sudo cp ../conf/dokuwiki.php $final_path/conf
|
||
|
||
# Do not override ACL configuration file
|
||
if [ ! -f "$final_path/conf/acl.auth.php" ]; then
|
||
sudo cp ../conf/acl.auth.php $final_path/conf
|
||
fi
|
||
|
||
# Remove upgrade notification
|
||
# See https://www.dokuwiki.org/update_check
|
||
sudo touch $final_path/doku.php
|
||
|
||
# Remove deleted files
|
||
# See https://www.dokuwiki.org/install:unused_files
|
||
if [ -f "../sources/data/deleted.files" ]; then
|
||
grep -Ev '^($|#)' ../sources/data/deleted.files | xargs -I {} sudo rm -vrf $final_path/{}
|
||
fi
|
||
|
||
# Change owner for all plugins
|
||
sudo chmod -R 755 $final_path/lib/plugins
|
||
|
||
# Update all plugins
|
||
for name_plugin in $(sudo -s cat $final_path/lib/plugins/*/plugin.info.txt | grep url | awk -F':' '{print $3}');
|
||
do
|
||
# Get a official plugin for dokuwiki, not update a no-official
|
||
sudo wget -nv --quiet "https://github.com/splitbrain/dokuwiki-plugin-${name_plugin}/zipball/master" -O "${name_plugin}.zip" -o /dev/null || true
|
||
if [ -s "${name_plugin}.zip" ]; then
|
||
sudo unzip ${name_plugin}.zip
|
||
sudo cp -a splitbrain-dokuwiki-plugin-${name_plugin}*/. "${final_path}/lib/plugins/${name_plugin}/"
|
||
fi
|
||
done
|
||
|
||
# Files owned by www-data can just read
|
||
sudo chown -R root: $final_path
|
||
|
||
# except for conf, data, some data subfolders, and lib/plugin, where dokuwiki must have write permissions
|
||
if [ -d "${final_path}/data/media" ]; then
|
||
sudo chown -R $app:root $final_path/{data/attic,data/cache,data/index,data/locks,data/media*,data/meta,data/pages,data/tmp}
|
||
fi
|
||
sudo chown -R $app:root $final_path/{conf,data,lib/plugins,lib/tpl}
|
||
sudo chmod -R 700 $final_path/conf
|
||
sudo chmod -R 700 $final_path/data
|
||
sudo chmod -R 755 $final_path/lib/plugins
|
||
sudo chmod 755 $final_path/lib/tpl/{dokuwiki,dokuwiki/images}
|
||
|
||
# Modify Nginx configuration file and copy it to Nginx conf directory
|
||
sudo sed -i "s@__PATHTOCHANGE__@$path@g" /etc/nginx/conf.d/$domain.d/$app.conf
|
||
sudo sed -i "s@__FINALPATH__@$final_path@g" /etc/nginx/conf.d/$domain.d/$app.conf
|
||
# sudo sed -i "s@__NAMETOCHANGE__@$app@g" /etc/nginx/conf.d/$domain.d/$app.conf
|
||
sudo sed -i "s@fastcgi_pass unix:/var/run/php5-fpm.sock;@fastcgi_pass unix:/var/run/php5-fpm-${app}.sock;@g" /etc/nginx/conf.d/$domain.d/$app.conf
|
||
|
||
if [ "$is_public" = "Yes" ];
|
||
then
|
||
sudo sed -i "s@#--PRIVATE--@@g" /etc/nginx/conf.d/$domain.d/$app.conf
|
||
fi
|
||
|
||
# Create the php-fpm pool config
|
||
POOL_FPM
|
||
|
||
# Set ssowat config
|
||
if [ "$is_public" = "Yes" ]; then
|
||
ynh_app_setting_set $app is_public 1 # Fixe is_public en booléen
|
||
is_public=1
|
||
else
|
||
ynh_app_setting_set $app is_public 0
|
||
is_public=0
|
||
fi
|
||
|
||
sudo systemctl reload nginx
|
||
sudo yunohost app ssowatconf |