create entrypoint for checking an/or generating domain files both public and smarthost proxies
This commit is contained in:
152
entrypoint.sh
Executable file
152
entrypoint.sh
Executable file
@@ -0,0 +1,152 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Debugging function
|
||||||
|
debug() {
|
||||||
|
if [ $DEBUG -eq 1 ]; then
|
||||||
|
echo "DEBUG: "$1 $2 $3
|
||||||
|
fi;
|
||||||
|
}
|
||||||
|
|
||||||
|
SOURCE=$SMARTHOST_PROXY_IP
|
||||||
|
TARGET=$TARGET
|
||||||
|
DOMAIN=$DOMAIN
|
||||||
|
PORT=$PORT
|
||||||
|
PUBLIC_PROXY_PATH=$PUBLIC_PROXY_PATH
|
||||||
|
|
||||||
|
# ADDITIONAL VARIABLES
|
||||||
|
ROLES=$ROLES
|
||||||
|
|
||||||
|
# turn on debug mode by extra option "debug"
|
||||||
|
if [[ "$(echo "$EXTRA_OPTIONS" | grep debug)" != "" ]] ; then
|
||||||
|
DEBUG=1
|
||||||
|
fi;
|
||||||
|
|
||||||
|
|
||||||
|
# finding IPv4 addresses from application names.
|
||||||
|
name_resolver() {
|
||||||
|
|
||||||
|
local DNS_IP
|
||||||
|
local DNS=$1
|
||||||
|
APP_IP=""
|
||||||
|
|
||||||
|
echo "DNS: "$DNS;
|
||||||
|
|
||||||
|
for D in $(echo $DNS);
|
||||||
|
do
|
||||||
|
|
||||||
|
UP=$(docker ps --format '{{.Names}}\t{{.Status}}' | grep Up | awk '{print $1}' | grep $D"-") ;
|
||||||
|
# filtering for ROLES variables if exists.
|
||||||
|
|
||||||
|
if [[ "$ROLES" != "null" && ! -z "$ROLES" ]]; then
|
||||||
|
|
||||||
|
UPS=""
|
||||||
|
for ROLE in $(echo $ROLES); do
|
||||||
|
FILTERED_BY_ROLE=$(docker inspect $UP -f '{{.Config.Labels.roles}}' | uniq | grep $ROLE)
|
||||||
|
if [[ "$(echo $FILTERED_BY_ROLE)" != "" ]]; then
|
||||||
|
UPS="$UPS $UP";
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
UP=$UPS
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$UP" ] ; then
|
||||||
|
for D_IP in `echo $UP` ;
|
||||||
|
do
|
||||||
|
DNS_IP=$(docker inspect $D_IP -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}');
|
||||||
|
APP_IP="$APP_IP $DNS_IP";
|
||||||
|
echo "APP_IP: "$APP_IP;
|
||||||
|
done
|
||||||
|
else
|
||||||
|
debug "no matching running process found for indentiying application IP addresses, exiting."
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
|
||||||
|
done;
|
||||||
|
}
|
||||||
|
|
||||||
|
# GETTING APPLICATIONS IP ADDRESSES
|
||||||
|
|
||||||
|
if [ ! -z "$SOURCE" ]; then
|
||||||
|
IDX=0
|
||||||
|
for i in $(echo $SOURCE) ; do
|
||||||
|
|
||||||
|
name_resolver $i;
|
||||||
|
debug "source ip is $APP_IP";
|
||||||
|
for IP in $(echo $APP_IP); do
|
||||||
|
IDX=$(expr 1 + $IDX)
|
||||||
|
eval SOURCE_IP_$IDX=$IP;
|
||||||
|
done;
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
IDX=0
|
||||||
|
for i in $(echo $TARGET) ; do
|
||||||
|
|
||||||
|
name_resolver $i;
|
||||||
|
debug "target ip is $APP_IP";
|
||||||
|
for IP in $(echo $APP_IP); do
|
||||||
|
IDX=$(expr 1 + $IDX)
|
||||||
|
eval TARGET_IP_$IDX=$IP;
|
||||||
|
done;
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
# CHECKING WHETHER IS IT NEEDED TO USE PUBLIC PROXY SERVICE
|
||||||
|
if [ "$PUBLIC_PROXY_PATH" != "" ]; then
|
||||||
|
# check domain config file exits
|
||||||
|
|
||||||
|
if [[ -f "$PUBLIC_PROXY_PATH/$DOMAIN" ]] || \
|
||||||
|
[[ "$(jq -r .DOMAIN $PUBLIC_PROXY_PATH/$DOMAIN)" == "$DOMAIN" && "$(jq -r .LOCAL_IP $PUBLIC_PROXY_PATH/$DOMAIN)" == "$SOURCE" ]]; then
|
||||||
|
|
||||||
|
echo "Nothing to do."
|
||||||
|
else
|
||||||
|
#Create public proxy domain file
|
||||||
|
|
||||||
|
echo '
|
||||||
|
{
|
||||||
|
"DOMAIN": "'$DOMAIN'",
|
||||||
|
"ALIASES_HTTP": [ ],
|
||||||
|
"ALIASES_HTTPS": [ ],
|
||||||
|
"LOCAL_IP": "'$SOURCE'",
|
||||||
|
"HTTP_PORT": "80",
|
||||||
|
"HTTPS_PORT": "443",
|
||||||
|
"ERROR_PAGE": "",
|
||||||
|
"REDIRECT_HTTP": "",
|
||||||
|
"REDIRECT_HTTPS": ""
|
||||||
|
}
|
||||||
|
' | jq -r . > $PUBLIC_PROXY_PATH/$DOMAIN
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# CHECKING WHETHER IS IT NEEDED TO USE SMARTHOST PROXY SERVICE
|
||||||
|
if [ "$SMARTHOST_PROXY_PATH" != "" ]; then
|
||||||
|
# check domain config file exits
|
||||||
|
|
||||||
|
if [[ -f "$SMARTHOST_PROXY_PATH/$DOMAIN" ]] || \
|
||||||
|
[[ "$(jq -r .DOMAIN $SMARTHOST_PROXY_PATH/$DOMAIN)" == "$DOMAIN" && "$(jq -r .LOCAL_IP $SMARTHOST_PROXY_PATH/$DOMAIN)" == "$TARGET" \
|
||||||
|
&& "$(jq -r .HTTP_PORT $SMARTHOST_PROXY_PATH/$DOMAIN)" == "$PORT"]]; then
|
||||||
|
|
||||||
|
echo "Nothing to do."
|
||||||
|
else
|
||||||
|
#Create public proxy domain file
|
||||||
|
|
||||||
|
echo '
|
||||||
|
{
|
||||||
|
"DOMAIN": "'$DOMAIN'",
|
||||||
|
"ALIASES_HTTP": [ ],
|
||||||
|
"ALIASES_HTTPS": [ ],
|
||||||
|
"LOCAL_IP": "'$TARGET'",
|
||||||
|
"HTTP_PORT": "'$PORT'",
|
||||||
|
"HTTPS_PORT": "443",
|
||||||
|
"ERROR_PAGE": "",
|
||||||
|
"REDIRECT_HTTP": "https://'$DOMAIN'",
|
||||||
|
"REDIRECT_HTTPS": "",
|
||||||
|
"MAX_BODY_SIZE": "512M"
|
||||||
|
}
|
||||||
|
' | jq -r . > $SMARTHOST_PROXY_PATH/$DOMAIN
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
Reference in New Issue
Block a user