mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
[enh] Update nginx conf_regen hook and simplify plain conf files copy
This commit is contained in:
parent
f019188a90
commit
d851237dc2
9 changed files with 79 additions and 86 deletions
|
@ -1,86 +0,0 @@
|
||||||
set -e
|
|
||||||
|
|
||||||
force=$1
|
|
||||||
|
|
||||||
function safe_copy () {
|
|
||||||
if [ ! -f /etc/yunohost/installed ]; then
|
|
||||||
sudo cp $1 $2
|
|
||||||
else
|
|
||||||
if [[ "$force" == "True" ]]; then
|
|
||||||
sudo yunohost service safecopy \
|
|
||||||
-s nginx \
|
|
||||||
$1 $2 \
|
|
||||||
--force
|
|
||||||
else
|
|
||||||
sudo yunohost service safecopy \
|
|
||||||
-s nginx \
|
|
||||||
$1 $2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
cd /usr/share/yunohost/templates/nginx
|
|
||||||
|
|
||||||
# Copy plain single configuration files
|
|
||||||
files="ssowat.conf
|
|
||||||
global.conf
|
|
||||||
yunohost_admin.conf
|
|
||||||
yunohost_admin.conf.inc
|
|
||||||
yunohost_api.conf.inc
|
|
||||||
yunohost_panel.conf.inc"
|
|
||||||
|
|
||||||
for file in $files; do
|
|
||||||
safe_copy $file /etc/nginx/conf.d/$file
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
if [ -f /etc/yunohost/installed ]; then
|
|
||||||
|
|
||||||
need_restart=False
|
|
||||||
domain_list=$(sudo yunohost domain list --output-as plain)
|
|
||||||
|
|
||||||
# Copy a configuration file for each YunoHost domain
|
|
||||||
for domain in $domain_list; do
|
|
||||||
sudo mkdir -p /etc/nginx/conf.d/$domain.d
|
|
||||||
cat server.conf.sed \
|
|
||||||
| sed "s/{{ domain }}/$domain/g" \
|
|
||||||
| sudo tee $domain.conf
|
|
||||||
[[ $(safe_copy $domain.conf /etc/nginx/conf.d/$domain.conf | tail -n1) == "True" ]] \
|
|
||||||
&& need_restart=True
|
|
||||||
|
|
||||||
[ -f /etc/nginx/conf.d/$domain.d/yunohost_local.conf ] \
|
|
||||||
&& [[ $main_domain != $domain ]] \
|
|
||||||
&& sudo yunohost service saferemove -s nginx \
|
|
||||||
/etc/nginx/conf.d/$domain.d/yunohost_local.conf
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
# Copy 'yunohost.local' to the main domain conf directory
|
|
||||||
main_domain=$(cat /etc/yunohost/current_host)
|
|
||||||
safe_copy yunohost_local.conf \
|
|
||||||
/etc/nginx/conf.d/$main_domain.d/yunohost_local.conf
|
|
||||||
|
|
||||||
|
|
||||||
# Remove old domains files
|
|
||||||
for file in /etc/nginx/conf.d/*.*.conf; do
|
|
||||||
domain=$(echo $file \
|
|
||||||
| sed 's|/etc/nginx/conf.d/||' \
|
|
||||||
| sed 's|.conf||')
|
|
||||||
[[ $domain_list =~ $domain ]] \
|
|
||||||
|| ([[ $(sudo yunohost service saferemove -s nginx $file) == "True" ]] \
|
|
||||||
&& (sudo rm -r /etc/nginx/conf.d/$domain.d || true))
|
|
||||||
done
|
|
||||||
|
|
||||||
else
|
|
||||||
[ ! -f /etc/nginx/sites-available/default ] \
|
|
||||||
|| sudo rm -f /etc/nginx/sites-enabled/default
|
|
||||||
need_restart=True
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Restart if need be
|
|
||||||
if [[ "$need_restart" == "True" ]]; then
|
|
||||||
sudo service nginx restart
|
|
||||||
else
|
|
||||||
sudo service nginx reload \
|
|
||||||
|| sudo service nginx restart
|
|
||||||
fi
|
|
79
data/hooks/conf_regen/15-nginx
Executable file
79
data/hooks/conf_regen/15-nginx
Executable file
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
do_pre_regen() {
|
||||||
|
pending_dir=$1
|
||||||
|
|
||||||
|
cd /usr/share/yunohost/templates/nginx
|
||||||
|
|
||||||
|
nginx_dir="${pending_dir}/etc/nginx"
|
||||||
|
nginx_conf_dir="${nginx_dir}/conf.d"
|
||||||
|
mkdir -p "$nginx_conf_dir"
|
||||||
|
|
||||||
|
# install plain conf files
|
||||||
|
cp plain/* "$nginx_conf_dir"
|
||||||
|
|
||||||
|
# retrieve variables
|
||||||
|
main_domain=$(cat /etc/yunohost/current_host)
|
||||||
|
domain_list=$(sudo yunohost domain list --output-as plain --quiet)
|
||||||
|
|
||||||
|
# add domain conf files
|
||||||
|
for domain in $domain_list; do
|
||||||
|
domain_conf_dir="${nginx_conf_dir}/${domain}.d"
|
||||||
|
mkdir -p "$domain_conf_dir"
|
||||||
|
|
||||||
|
# NGINX server configuration
|
||||||
|
cat server.tpl.conf \
|
||||||
|
| sed "s/{{ domain }}/${domain}/g" \
|
||||||
|
> "${nginx_conf_dir}/${domain}.conf"
|
||||||
|
|
||||||
|
[[ $main_domain != $domain ]] \
|
||||||
|
&& touch "${domain_conf_dir}/yunohost_local.conf" \
|
||||||
|
|| cp yunohost_local.conf "${domain_conf_dir}/yunohost_local.conf"
|
||||||
|
done
|
||||||
|
|
||||||
|
# remove old domain conf files
|
||||||
|
conf_files=$(ls -1 /etc/nginx/conf.d \
|
||||||
|
| awk '/^[^\.]+\.[^\.]+.*\.conf$/ { print $1 }')
|
||||||
|
for file in $conf_files; do
|
||||||
|
domain=${file%.conf}
|
||||||
|
[[ $domain_list =~ $domain ]] \
|
||||||
|
|| touch "${nginx_conf_dir}/${file}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# disable default site
|
||||||
|
mkdir -p "${nginx_dir}/sites-enabled"
|
||||||
|
touch "${nginx_dir}/sites-enabled/default"
|
||||||
|
}
|
||||||
|
|
||||||
|
do_post_regen() {
|
||||||
|
# retrieve variables
|
||||||
|
# TODO: retrieve only changed/new domains
|
||||||
|
domain_list=$(sudo yunohost domain list --output-as plain --quiet)
|
||||||
|
|
||||||
|
# create NGINX conf directories for domains
|
||||||
|
for domain in $domain_list; do
|
||||||
|
sudo mkdir -p "/etc/nginx/conf.d/${domain}.d"
|
||||||
|
done
|
||||||
|
|
||||||
|
# TODO: only restart if conf changed
|
||||||
|
sudo service nginx restart
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCE=$2
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
pre)
|
||||||
|
do_pre_regen $3
|
||||||
|
;;
|
||||||
|
post)
|
||||||
|
do_post_regen
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "hook called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Add table
Reference in a new issue