1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/baikal_ynh.git synced 2024-09-03 18:16:11 +02:00

Handle well-known conflict

This commit is contained in:
Maniack Crudelis 2019-05-05 19:29:59 +02:00
parent 83a13b6312
commit 24b1e25f80
3 changed files with 49 additions and 2 deletions

35
scripts/_common.sh Normal file
View file

@ -0,0 +1,35 @@
#!/bin/bash
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
# Check if an URL is already handled
# usage: is_url_handled URL
is_url_handled() {
# Declare an array to define the options of this helper.
declare -Ar args_array=( [u]=url= )
local url
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
# Try to get the url with curl, and keep the http code and an eventual redirection url.
local curl_output="$(curl --insecure --silent --output /dev/null \
--write-out '%{http_code};%{redirect_url}' "$url")"
# Cut the output and keep only the first part to keep the http code
local http_code="${curl_output%%;*}"
# Do the same thing but keep the second part, the redirection url
local redirection="${curl_output#*;}"
# Return 1 if the url isn't handled.
# Which means either curl got a 404 (or the admin) or the sso.
# A handled url should redirect to a publicly accessible url.
# Return 1 if the url has returned 404
if [ "$http_code" = "404" ] || [[ $redirection =~ "/yunohost/admin" ]]; then
return 1
# Return 1 if the url is redirected to the SSO
elif [[ $redirection =~ "/yunohost/sso" ]]; then
return 1
fi
}

View file

@ -6,7 +6,7 @@
# IMPORT GENERIC HELPERS
#=================================================
#source ./_common.sh
source ./_common.sh
source /usr/share/yunohost/helpers
#=================================================
@ -40,6 +40,12 @@ path_url=$(ynh_normalize_url_path $path_url)
# Register (book) web path
ynh_webpath_register $app $domain $path_url
# Check if .well-known is available for this domain.
if is_url_handled "https://$domain/.well-known/caldav" || is_url_handled "https://$domain/.well-known/carddav"
then
ynh_die --message="Another app already uses the domain $domain to serve a caldav/carddav feature. Please use another domain."
fi
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================

View file

@ -6,7 +6,7 @@
# IMPORT GENERIC HELPERS
#=================================================
# source ../settings/scripts/_common.sh
source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers
#=================================================
@ -38,6 +38,12 @@ ynh_webpath_available $domain $path_url \
test ! -d $final_path \
|| ynh_die "There is already a directory: $final_path "
# Check if .well-known is available for this domain.
if is_url_handled "https://$domain/.well-known/caldav" || is_url_handled "https://$domain/.well-known/carddav"
then
ynh_die --message="Another app already uses the domain $domain to serve a caldav/carddav feature. Please use another domain."
fi
#=================================================
# STANDARD RESTORATION STEPS
#=================================================