on vire foreign-domain
This commit is contained in:
@@ -1,240 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# list/ajout/supprime/ les domaines extérieurs à kaz.bzh
|
|
||||||
|
|
||||||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
|
||||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
|
||||||
setKazVars
|
|
||||||
|
|
||||||
export PRG="$0"
|
|
||||||
cd $(dirname $0)
|
|
||||||
|
|
||||||
. "${DOCKERS_ENV}"
|
|
||||||
|
|
||||||
LETS_DIR="/etc/letsencrypt/$([ "${mode}" == "local" ] && echo "local" || echo "live")"
|
|
||||||
|
|
||||||
declare -a availableComposes availableOrga
|
|
||||||
availableComposes=(${pahekoHost} ${cloudHost} ${dokuwikiHost} ${wordpressHost} ${matterHost} ${castopodHost})
|
|
||||||
availableOrga=($(sed -e "s/\(.*\)[ \t]*#.*$/\1/" -e "s/^[ \t]*\(.*\)-orga$/\1/" -e "/^$/d" "${KAZ_CONF_DIR}/container-orga.list"))
|
|
||||||
availableProxyComposes=($(getList "${KAZ_CONF_DIR}/container-proxy.list"))
|
|
||||||
|
|
||||||
# no more export in .env
|
|
||||||
export $(set | grep "domain=")
|
|
||||||
|
|
||||||
export CMD=""
|
|
||||||
export SIMU=""
|
|
||||||
export CHANGE=""
|
|
||||||
|
|
||||||
usage(){
|
|
||||||
echo "Usage: ${PRG} list [friend-domain...]"
|
|
||||||
echo " ${PRG} [-n] add orga [${pahekoHost} ${cloudHost} ${dokuwikiHost} ${wordpressHost} ${matterHost} ${castopodHost}] [friend-domain...] "
|
|
||||||
echo " ${PRG} [-n] del [friend-domain...]"
|
|
||||||
echo " ${PRG} -l"
|
|
||||||
echo " -l short list"
|
|
||||||
echo " -renewAll"
|
|
||||||
echo " -h help"
|
|
||||||
echo " -n simulation"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
export CERT_CFG="${KAZ_CONF_PROXY_DIR}/foreign-certificate"
|
|
||||||
|
|
||||||
createCert () {
|
|
||||||
(
|
|
||||||
fileName="${LETS_DIR}/$1-key.pem"
|
|
||||||
#[ -f "${fileName}" ] || return
|
|
||||||
# if [ -f "${fileName}" ]; then
|
|
||||||
# fileTime=$(stat --format='%Y' "${fileName}")
|
|
||||||
# current_time=$(date +%s)
|
|
||||||
# if (( "${fileTime}" > ( "${current_time}" - ( 60 * 60 * 24 * 89 ) ) )); then
|
|
||||||
# exit
|
|
||||||
# fi
|
|
||||||
# fi
|
|
||||||
printKazMsg "create certificat for $1"
|
|
||||||
${SIMU} docker exec -i proxyServ bash -c "/opt/certbot/bin/certbot certonly -n --nginx -d $1"
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
for ARG in $@; do
|
|
||||||
case "${ARG}" in
|
|
||||||
'-h' | '-help' )
|
|
||||||
usage
|
|
||||||
;;
|
|
||||||
'-n' )
|
|
||||||
shift
|
|
||||||
export SIMU="echo"
|
|
||||||
;;
|
|
||||||
'-renewAll')
|
|
||||||
for i in $("${KAZ_BIN_DIR}/foreign-domain.sh" -l); do
|
|
||||||
echo "$i"
|
|
||||||
createCert "$i" |grep failed
|
|
||||||
done
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
'-l')
|
|
||||||
for compose in ${availableComposes[@]} ; do
|
|
||||||
grep "server_name" "${KAZ_CONF_PROXY_DIR}/${compose}_kaz_name" | sed -e "s/[ \t]*\([^#]*\)#.*/\1/g" -e "/^$/d" -e "s/.*server_name[ \t]\([^ ;]*\).*/\1/"
|
|
||||||
done
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
'list'|'add'|'del' )
|
|
||||||
shift
|
|
||||||
CMD="${ARG}"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
usage
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -z "${CMD}" ]; then
|
|
||||||
echo "Commande missing"
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
|
|
||||||
########################################
|
|
||||||
badDomaine () {
|
|
||||||
[[ -z "$1" ]] && return 0;
|
|
||||||
[[ ! "$1" =~ ^[-.a-zA-Z0-9]*$ ]] && return 0;
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
badOrga () {
|
|
||||||
[[ -z "$1" ]] && return 0;
|
|
||||||
[[ ! " ${availableOrga[*]} " =~ " $1 " ]] && return 0
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
badCompose () {
|
|
||||||
[[ -z "$1" ]] && return 0;
|
|
||||||
[[ ! " ${availableComposes[*]} " =~ " $1 " ]] && return 0
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
########################################
|
|
||||||
listServ () {
|
|
||||||
for compose in ${availableComposes[@]} ; do
|
|
||||||
sed -e "s/[ \t]*\([^#]*\)#.*/\1/g" -e "/^$/d" -e "s/.*server_name[ \t]\([^ ;]*\).*/\1 : ${compose}/" "${KAZ_CONF_PROXY_DIR}/${compose}_kaz_name"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
listOrgaServ () {
|
|
||||||
for compose in ${availableComposes[@]} ; do
|
|
||||||
sed -e "s/[ \t]*\([^#]*\)#.*/\1/g" -e "/^$/d" -e "s/\([^ ]*\)[ \t]*\([^ \t;]*\).*/\1 => \2 : ${compose}/" "${KAZ_CONF_PROXY_DIR}/${compose}_kaz_map"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
########################################
|
|
||||||
list () {
|
|
||||||
previousOrga=$(listOrgaServ)
|
|
||||||
previousServ=$(listServ)
|
|
||||||
if [ $# -lt 1 ]; then
|
|
||||||
[ -n "${previousOrga}" ] && echo "${previousOrga}"
|
|
||||||
[ -n "${previousServ}" ] && echo "${previousServ}"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
for ARG in $@
|
|
||||||
do
|
|
||||||
orga=$(echo "${previousOrga}" | grep "${ARG}.* =>")
|
|
||||||
serv=$(echo "${previousServ}" | grep "${ARG}.* =>")
|
|
||||||
[ -n "${orga}" ] && echo "${orga}"
|
|
||||||
[ -n "${serv}" ] && echo "${serv}"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
########################################
|
|
||||||
add () {
|
|
||||||
# $1 : orga
|
|
||||||
# $2 : service
|
|
||||||
# $3 : friend-domain
|
|
||||||
[ $# -lt 3 ] && usage
|
|
||||||
badOrga $1 && echo "bad orga: ${RED}$1${NC} not in ${GREEN}${availableOrga[@]}${NC}" && usage
|
|
||||||
badCompose $2 && echo "bad compose: ${RED}$2${NC} not in ${GREEN}${availableComposes[@]}${NC}" && usage
|
|
||||||
ORGA=$1
|
|
||||||
COMPOSE=$2
|
|
||||||
shift; shift
|
|
||||||
CLOUD_SERVNAME="${ORGA}-${nextcloudServName}"
|
|
||||||
CLOUD_CONFIG="${DOCK_VOL}/orga_${ORGA}-cloudConfig/_data/config.php"
|
|
||||||
|
|
||||||
# XXX check compose exist in orga ?
|
|
||||||
# /kaz/bin/kazList.sh service enable ${ORGA}
|
|
||||||
if [ "${COMPOSE}" = "${cloudHost}" ]; then
|
|
||||||
if ! [[ "$(docker ps -f name=${CLOUD_SERVNAME} | grep -w ${CLOUD_SERVNAME})" ]]; then
|
|
||||||
printKazError "${CLOUD_SERVNAME} not running... abort"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
for FRIEND in $@; do
|
|
||||||
badDomaine "${FRIEND}" && echo "bad domaine: ${RED}${FRIEND}${NC}" && usage
|
|
||||||
done
|
|
||||||
|
|
||||||
for FRIEND in $@; do
|
|
||||||
createCert "${FRIEND}"
|
|
||||||
if [ "${COMPOSE}" = "${cloudHost}" ]; then
|
|
||||||
IDX=$(awk 'BEGIN {flag=0; cpt=0} /trusted_domains/ {flag=1} /)/ {if (flag) {print cpt+1; exit 0}} / => / {if (flag && cpt<$1) cpt=$1}' "${CLOUD_CONFIG}")
|
|
||||||
${SIMU} docker exec -ti -u 33 "${CLOUD_SERVNAME}" /var/www/html/occ config:system:set trusted_domains "${IDX}" --value="${FRIEND}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
previousOrga=$(listOrgaServ | grep "${FRIEND}")
|
|
||||||
[[ " ${previousOrga}" =~ " ${FRIEND} => ${ORGA} : ${COMPOSE}" ]] && echo " - already done" && continue
|
|
||||||
[[ " ${previousOrga}" =~ " ${FRIEND} " ]] && echo " - ${YELLOW}${BOLD}$(echo "${previousOrga}" | grep -e "${FRIEND}")${NC} must be deleted before" && return
|
|
||||||
if [[ -n "${SIMU}" ]] ; then
|
|
||||||
echo "${FRIEND} ${ORGA}; => ${KAZ_CONF_PROXY_DIR}/${COMPOSE}_kaz_map"
|
|
||||||
cat <<EOF
|
|
||||||
=> ${KAZ_CONF_PROXY_DIR}/${COMPOSE}_kaz_name
|
|
||||||
server_name ${FRIEND};
|
|
||||||
EOF
|
|
||||||
else
|
|
||||||
echo "${FRIEND} ${ORGA};" >> "${KAZ_CONF_PROXY_DIR}/${COMPOSE}_kaz_map"
|
|
||||||
cat >> "${KAZ_CONF_PROXY_DIR}/${COMPOSE}_kaz_name" <<EOF
|
|
||||||
server_name ${FRIEND};
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
echo "${PRG}: ${FRIEND} added"
|
|
||||||
|
|
||||||
CHANGE="add"
|
|
||||||
done
|
|
||||||
#(cd "${KAZ_COMP_DIR}/${ORGA}-orga"; docker-compose restart)
|
|
||||||
}
|
|
||||||
|
|
||||||
########################################
|
|
||||||
del () {
|
|
||||||
[ $# -lt 1 ] && usage
|
|
||||||
|
|
||||||
for FRIEND in $@; do
|
|
||||||
badDomaine "${FRIEND}" && echo "bad domaine: ${RED}${FRIEND}${NC}" && usage
|
|
||||||
previous=$(listOrgaServ | grep -e "${FRIEND}")
|
|
||||||
[[ ! "${previous}" =~ ^${FRIEND} ]] && echo "${FRIEND} not found in ${previous}" && continue
|
|
||||||
# XXX if done OK
|
|
||||||
for COMPOSE in ${availableComposes[@]} ; do
|
|
||||||
if grep -q -e "^[ \t]*${FRIEND}[ \t]" "${KAZ_CONF_PROXY_DIR}/${COMPOSE}_kaz_map" ; then
|
|
||||||
if [ "${COMPOSE}" = "${cloudHost}" ]; then
|
|
||||||
ORGA="$(grep "${FRIEND}" "${KAZ_CONF_PROXY_DIR}/${COMPOSE}_kaz_map" | sed "s/^${FRIEND}\s*\([^;]*\);/\1/")"
|
|
||||||
CLOUD_CONFIG="${DOCK_VOL}/orga_${ORGA}-cloudConfig/_data/config.php"
|
|
||||||
${SIMU} sed -e "/\d*\s*=>\s*'${FRIEND}'/d" -i "${CLOUD_CONFIG}"
|
|
||||||
fi
|
|
||||||
${SIMU} sed -e "/^[ \t]*${FRIEND}[ \t]/d" -i "${KAZ_CONF_PROXY_DIR}/${COMPOSE}_kaz_map"
|
|
||||||
fi
|
|
||||||
if grep -q -e "^[ \t]*server_name ${FRIEND};" "${KAZ_CONF_PROXY_DIR}/${COMPOSE}_kaz_name" ; then
|
|
||||||
${SIMU} sed -i "${KAZ_CONF_PROXY_DIR}/${COMPOSE}_kaz_name" \
|
|
||||||
-e "/^[ \t]*server_name ${FRIEND};/d"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo "${PRG}: ${FRIEND} deleted"
|
|
||||||
CHANGE="del"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
########################################
|
|
||||||
${CMD} $@
|
|
||||||
|
|
||||||
if [ -n "${CHANGE}" ] ; then
|
|
||||||
echo "Reload proxy conf"
|
|
||||||
for item in "${availableProxyComposes[@]}"; do
|
|
||||||
${SIMU} ${KAZ_COMP_DIR}/${item}/proxy-gen.sh
|
|
||||||
${SIMU} "${KAZ_COMP_DIR}/proxy/reload.sh"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
########################################
|
|
||||||
Reference in New Issue
Block a user