corrected domain name variable usage even it contains asterisk character

This commit is contained in:
gyurix
2024-11-25 12:22:44 +01:00
parent 3466187280
commit 9318cea882

View File

@@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# Initial parameters # Initial parameters
DATE=`date +%F-%H-%M-%S` DATE=$(date +%F-%H-%M-%S)
DOMAIN=$1 DOMAIN=$1
@@ -19,125 +19,130 @@ cp -a /scripts/haproxy_template.cfg $PROXY_CONFIG_DIR/haproxy.cfg
{ {
echo "frontend http echo "frontend http
"; "
cat "$global_http" cat "$global_http"
echo echo
#echo "acl letsencrypt path_beg /.well-known/acme-challenge/"; #echo "acl letsencrypt path_beg /.well-known/acme-challenge/";
echo echo
for i in `ls $DOMAIN_DIR|cut -d / -f2` ; do for i in $(ls $DOMAIN_DIR | cut -d / -f2); do
if [[ "$(jq -r .REDIRECT_HTTPS $i)" != "" && "$(jq -r .HTTP_PORT $i)" != "" && "$(jq -r .DOMAIN $i)" != "letsencrypt" ]] DOMAIN_NAME=$(jq -r .DOMAIN $i)
then if [[ "$(jq -r .REDIRECT_HTTPS $i)" != "" && "$(jq -r .HTTP_PORT $i)" != "" && "$DOMAIN_NAME" != "letsencrypt" ]]; then
echo "redirect prefix https://$(jq -r .REDIRECT_HTTPS $i) code 301 if { hdr(host) -i $(jq -r .DOMAIN $i) }"; echo "redirect prefix https://$(jq -r .REDIRECT_HTTPS $i) code 301 if { hdr(host) -i $DOMAIN_NAME }"
fi fi
done done
echo echo
for i in `ls $DOMAIN_DIR|cut -d / -f2` ; do for i in $(ls $DOMAIN_DIR | cut -d / -f2); do
if [[ "$(jq -r .DOMAIN $i)" != "" && "$(jq -r .HTTP_PORT $i)" != "" && "$(jq -r .DOMAIN $i)" != "letsencrypt" ]] DOMAIN_NAME=$(jq -r .DOMAIN $i)
then if [[ "$DOMAIN_NAME" != "" && "$(jq -r .HTTP_PORT $i)" != "" && "$DOMAIN_NAME" != "letsencrypt" ]]; then
INDIVIDUAL_DOMAIN_FLAG=$(jq -r .INDIVIDUAL_DOMAIN $i 2>/dev/null );
DOMAIN_NAME=$(jq -r .DOMAIN $i);
if [[ "$INDIVIDUAL_DOMAIN_FLAG" == "" || "$INDIVIDUAL_DOMAIN_FLAG" == "null" ]]; then
echo "acl "$DOMAIN_NAME"_http hdr(host) -i "$DOMAIN_NAME"";
else
echo "acl "$DOMAIN_NAME"_http hdr(host) -m reg -i ^[^\.]+\."$DOMAIN_NAME"$";
fi
fi
if [[ "$(jq -r .DOMAIN $i)" != "letsencrypt" && "$(jq -r .HTTP_PORT $i)" != "" && "$(jq -r .ALIASES_HTTP[] $i)" != "" ]] TLD="$(echo $DOMAIN_NAME | rev | cut -d '.' -f1 | rev)"
then HOST=$(echo $DOMAIN_NAME | rev | cut -d '.' -f2- | rev | cut -d '.' -f2-)
ALIASES_LIST=$(jq -r .ALIASES_HTTP[] $i) WILDCARD=$(echo $DOMAIN_NAME | grep '*')
for ALIAS in $ALIASES_LIST
do
echo "acl $(jq -r .DOMAIN $i)_http hdr(host) -i $ALIAS";
done
fi
done if [ "$WILDCARD" != "" ]; then
echo "acl $HOST."$TLD"_http hdr(host) -m reg -i ^[^\.]+\."$HOST"\."$TLD"$"
else
echo "acl $HOST."$TLD"_http hdr(host) -i $DOMAIN_NAME"
fi
fi
echo if [[ "$DOMAIN_NAME" != "letsencrypt" && "$(jq -r .HTTP_PORT $i)" != "" && "$(jq -r .ALIASES_HTTP[] $i)" != "" ]]; then
ALIASES_LIST=$(jq -r .ALIASES_HTTP[] $i)
for ALIAS in $ALIASES_LIST; do
echo "acl $HOST."$TLD"_http hdr(host) -i $ALIAS"
done
fi
#echo "use_backend letsencrypt_http if letsencrypt" done
for i in `ls $DOMAIN_DIR|cut -d / -f2` ; do echo
if [[ "$(jq -r .DOMAIN $i)" != "" && "$(jq -r .HTTP_PORTS $i)" != "" && "$(jq -r .DOMAIN $i)" != "letsencrypt" ]]
then
echo "use_backend $(jq -r .DOMAIN $i)_http if $(jq -r .DOMAIN $i)_http";
fi
done
echo #echo "use_backend letsencrypt_http if letsencrypt"
for i in `ls $DOMAIN_DIR|cut -d / -f2` ; do for i in $(ls $DOMAIN_DIR | cut -d / -f2); do
if [[ "$(jq -r .DOMAIN $i)" != "" && "$(jq -r .HTTP_PORT $i)" != "" ]] DOMAIN_NAME=$(jq -r .DOMAIN $i)
then TLD="$(echo $DOMAIN_NAME | rev | cut -d '.' -f1 | rev)"
echo "backend $(jq -r .DOMAIN $i)_http"; HOST=$(echo $DOMAIN_NAME | rev | cut -d '.' -f2- | rev | cut -d '.' -f2-)
echo " mode http";
echo " server $(jq -r .DOMAIN $i) $(jq -r .LOCAL_NAME $i):$(jq -r .HTTP_PORT $i) send-proxy";
fi
done
echo if [[ "$DOMAIN_NAME" != "" && "$(jq -r .HTTP_PORT $i)" != "" && "$DOMAIN_NAME" != "letsencrypt" ]]; then
echo "use_backend host_"$HOST".$TLD if $HOST."$TLD"_http"
fi
done
echo "frontend https echo
";
cat "$global_https" for i in $(ls $DOMAIN_DIR | cut -d / -f2); do
echo
for i in `ls $DOMAIN_DIR|cut -d / -f2` ; do DOMAIN_NAME=$(jq -r .DOMAIN $i)
TLD="$(echo $DOMAIN_NAME | rev | cut -d '.' -f1 | rev)"
HOST=$(echo $DOMAIN_NAME | rev | cut -d '.' -f2- | rev | cut -d '.' -f2-)
if [[ "$(jq -r .DOMAIN $i)" != "" && "$(jq -r .HTTPS_PORT $i)" != "" && "$(jq -r .DOMAIN $i)" != "letsencrypt" ]] if [[ "$DOMAIN_NAME" != "" && "$(jq -r .HTTP_PORT $i)" != "" ]]; then
then echo "backend host_"$HOST."$TLD"
INDIVIDUAL_DOMAIN_FLAG=$(jq -r .INDIVIDUAL_DOMAIN $i 2>/dev/null ); echo " mode http"
DOMAIN_NAME=$(jq -r .DOMAIN $i); echo " server $HOST.$TLD $(jq -r .LOCAL_NAME $i):$(jq -r .HTTP_PORT $i) send-proxy"
if [[ "$INDIVIDUAL_DOMAIN_FLAG" == "" || "$INDIVIDUAL_DOMAIN_FLAG" == "null" ]]; then fi
echo "acl "$DOMAIN_NAME"_https req_ssl_sni -i "$DOMAIN_NAME""; done
else
echo "acl "$DOMAIN_NAME"_https req_ssl_sni -i -m reg ^[^\.]+\."$DOMAIN_NAME"$";
fi
fi
if [[ "$(jq -r .HTTPS_PORT $i)" != "" && "$(jq -r .ALIASES_HTTPS[] $i)" != "" ]]
then
ALIASES_LIST=$(jq -r .ALIASES_HTTPS[] $i)
for ALIAS in $ALIASES_LIST
do
echo "acl $(jq -r .DOMAIN $i)_https req_ssl_sni -i $ALIAS";
done
fi
done
echo echo
for i in `ls $DOMAIN_DIR|cut -d / -f2` ; do echo "frontend https
"
if [[ "$(jq -r .DOMAIN $i)" != "" && "$(jq -r .HTTPS_PORT $i)" != "" && "$(jq -r .DOMAIN $i)" != "letsencrypt" ]] cat "$global_https"
then echo
echo "use_backend $(jq -r .DOMAIN $i)_https if $(jq -r .DOMAIN $i)_https";
fi
done
echo for i in $(ls $DOMAIN_DIR | cut -d / -f2); do
DOMAIN_NAME=$(jq -r .DOMAIN $i)
TLD="$(echo $DOMAIN_NAME | rev | cut -d '.' -f1 | rev)"
HOST=$(echo $DOMAIN_NAME | rev | cut -d '.' -f2- | rev | cut -d '.' -f2-)
WILDCARD=$(echo $DOMAIN_NAME | grep '*')
for i in `ls $DOMAIN_DIR|cut -d / -f2` ; do if [[ "$DOMAIN_NAME" != "" && "$(jq -r .HTTPS_PORT $i)" != "" && "$DOMAIN_NAME" != "letsencrypt" ]]; then
if [[ "$(jq -r .DOMAIN $i)" != "" && "$(jq -r .HTTPS_PORT $i)" != "" && "$(jq -r .DOMAIN $i)" != "letsencrypt" ]] if [ "$WILDCARD" != "" ]; then
then echo "acl $HOST."$TLD"_https req_ssl_sni -i ^[^\.]+\.$HOST\."$TLD"$"
echo "backend $(jq -r .DOMAIN $i)_https"; else
echo " option ssl-hello-chk"; echo "acl $HOST."$TLD"_https req_ssl_sni -i $DOMAIN_NAME"
echo " mode tcp"; fi
echo " server $(jq -r .DOMAIN $i) $(jq -r .LOCAL_NAME $i):$(jq -r .HTTPS_PORT $i) check send-proxy"; fi
fi if [[ "$(jq -r .HTTPS_PORT $i)" != "" && "$(jq -r .ALIASES_HTTPS[] $i)" != "" ]]; then
done ALIASES_LIST=$(jq -r .ALIASES_HTTPS[] $i)
for ALIAS in $ALIASES_LIST; do
echo "acl $HOST."$TLD"_https req_ssl_sni -i $ALIAS"
done
fi
done
} >> "$file"; echo
echo "$DOMAIN" >> $PROXY_CONFIG_DIR/new_config
for i in $(ls $DOMAIN_DIR | cut -d / -f2); do
if [[ "$DOMAIN_NAME" != "" && "$(jq -r .HTTPS_PORT $i)" != "" && "$DOMAIN_NAME" != "letsencrypt" ]]; then
echo "use_backend host_"$HOST".$TLD if $HOST."$TLD"_https"
fi
done
echo
for i in $(ls $DOMAIN_DIR | cut -d / -f2); do
if [[ "$DOMAIN_NAME" != "" && "$(jq -r .HTTPS_PORT $i)" != "" && "$DOMAIN_NAME" != "letsencrypt" ]]; then
echo "backend host_"$HOST".$TLD"
echo " option ssl-hello-chk"
echo " mode tcp"
echo " server $HOST.$TLD $(jq -r .LOCAL_NAME $i):$(jq -r .HTTPS_PORT $i) check send-proxy"
fi
done
} >>"$file"
echo "$DOMAIN" >>$PROXY_CONFIG_DIR/new_config