From dbf250f4070d91d99b57512a8b7730e6c739dae7 Mon Sep 17 00:00:00 2001 From: gyurix Date: Fri, 2 Sep 2022 14:50:16 +0000 Subject: [PATCH] Major changes in deploy script --- deploy.sh | 114 ++++++++++++++++++++++++++++++-------------------- entrypoint.sh | 12 ++++++ 2 files changed, 80 insertions(+), 46 deletions(-) diff --git a/deploy.sh b/deploy.sh index 732a980..92b56d1 100755 --- a/deploy.sh +++ b/deploy.sh @@ -4,6 +4,10 @@ toUpperCase() { echo "$*" | tr '[:lower:]' '[:upper:]'; } GIT_REPO=$GIT_REPO +if [ "$GIT_REPO" == "" ]; then + GIT_REPO=git.format.hu +fi + ORGANIZATION=$ORGANIZATION if [ "$ORGANIZATION" == "" ]; then @@ -15,11 +19,6 @@ SMARTHOST_PROXY=$(toUpperCase $SMARTHOST_PROXY) WIREGUARD=$(toUpperCase $WIREGUARD) OPENVPN=$(toUpperCase $OPENVPN) -SERVICE_DIR=$SERVICE_DIR -PROXY_DIR=$PROXY_DIR -PROXY_LOG_DIR=$PROXY_LOG_DIR -DNS_DIR=$DNS_DIR - if [[ "$PUBLIC_PROXY" == "YES" || "$PUBLIC_PROXY" == "TRUE" ]]; then PROXY_TYPE=public-proxy; @@ -34,7 +33,7 @@ fi for i in $(echo $PROXY_TYPE); do # Clone source files from git repository - git clone ssh://$GIT_REPO/$ORGANIZATION/$i.git /tmp/ + git clone ssh://$GIT_REPO/$ORGANIZATION/$i.git /tmp/$i #if [ "$i" == "public-proxy" ] ; then @@ -42,48 +41,60 @@ for i in $(echo $PROXY_TYPE); do #if [[ "$WIREGUARD" == "YES" || "$WIREGUARD" == "TRUE" ]]; then # COPY SERVICE FILES INTO SRVICE DIR + + # DEFINE SERVICE DIR FROM PROXY-SCHEDULER AND PROXY SERVICE FILE JSONS - if [ "$SERVICE_DIR" == "" ] ; then - SERVICE_DIR="/etc/user/config/services"; - mkdir -p $SERVICE_DIR; - fi + if [ "$i" == "public-proxy" ] ; then + PROXY_SCHEDULER_FILE=proxy-scheduler.json + else + PROXY_SCHEDULER_FILE=smarthost-proxy-scheduler.json + fi + + PROXY_SCHEDULER_NAME=$(jq -r .containers[0].NAME /tmp/$i/$PROXY_SERVICE_FILE | cut -d "-" -f1) + PROXY_SERVICE_FILE=$(jq -r .$PROXY_SCHEDULER_NAME.PROXY_SERVICE_FILE /tmp/$i/proxy_config) + SERVICE_DIR=$(jq -r .containers[0].VOLUMES[].SOURCE /tmp/$i/$PROXY_SERVICE_FILE |grep $PROXY_SERVICE_FILE | sed s/$PROXY_SERVICE_FILE//g) - cp -av /tmp/$REPOSITORY/$i/*.json $SERVICE_DIR/ + PROXY_CONFIG_DIR=$(jq -r .$PROXY_SCHEDULER_NAME.PROXY_CONFIG_DIR /tmp/$i/proxy_config) + PROXY_VOLUME=$(jq -r --arg DEST "$PROXY_CONFIG_DIR" '.containers[0].VOLUMES[] | select(.DEST==$DEST)' /tmp/$i/$PROXY_SERVICE_FILE) + PROXY_DIR=$(echo $PROXY_VOLUME | jq -r .SOURCE) + PROXY_DIR=$(dirname $PROXY_DIR | sed s/$i//g) + + DOMAIN_CONFIG_DIR=$(jq -r .$PROXY_SCHEDULER_NAME.DOMAIN_DIR /tmp/$i/proxy_config) + DOMAIN_VOLUME=$(jq -r --arg DEST "$DOMAIN_CONFIG_DIR" '.containers[0].VOLUMES[] | select(.DEST==$DEST)' /tmp/$i/$PROXY_SERVICE_FILE) + DOMAIN_DIR=$(echo $DOMAIN_VOLUME | jq -r .SOURCE) + + mkdir -p $SERVICE_DIR; + + cp -av /tmp/$i/*.json $SERVICE_DIR/ # CREATE FILESYSTEM ACCESS FOR SERVICES - if [ "$PROXY_DIR" == "" ] ; then - $PROXY_DIR="/etc/system/config/$i"; - else - $PROXY_DIR="$PROXY_DIR/$i" - fi - - mkdir -p $PROXY_DIR/loadbalancer; - mkdir -p PROXY_DIR/backend; - - if [ "$PROXY_LOG_DIR" == "" ] ; then - $PROXY_LOG_DIR="/etc/system/log/$i" ; - else - $PROXY_LOG_DIR="$PROXY_LOG_DIR/$i" ; - fi - - mkdir -p $PROXY_LOG_DIR/loadbalancer; - mkdir -p $PROXY_LOG_DIR/backend; + + mkdir -p $PROXY_DIR + mkdir -p $DOMAIN_DIR + SPEC_PROXY_DIR=$PROXY_DIR/$i + # CREATE ALL SOURCE FOLDER FOR RUNNING PROXIES + + PROXY_VOLUMES=$(jq -r .containers[].VOLUMES[].SOURCE /tmp/$i/$i.json |grep -v '\.') + + for VOLUME in $(echo $PROXY_VOLUMES); do + mkdir -p $VOLUME; + done # CREATE PROXY SCHEDULER SERVICE - # CHECK prox config file exists - SOURCE=$(cat /tmp/$REPOSITORY/$i/proxy_config); - TARGET=$(cat $PUBLIC_PROXY_DIR/proxy.json | tail -n+2); + # CHECK proxy config file exists + SOURCE=$(cat /tmp/$i/proxy_config| tail -n+2 |head -n-2); + TARGET=$(cat $PROXY_DIR/proxy.json | tail -n+2); TMP_FILE=/tmp/proxy.json { echo "{" - cat $SOURCE + echo $SOURCE } > "$TMP_FILE"; - if [ -f $PUBLIC_PROXY_DIR/proxy.json ]; then + if [[ -f $PROXY_DIR/proxy.json ]]; then { echo "}," echo $TARGET @@ -95,25 +106,36 @@ for i in $(echo $PROXY_TYPE); do } >> "$TMP_FILE"; fi - jq -r . $TMP_FILE > $PUBLIC_PROXY_DIR/proxy.json + # formats json content and removes duplications + jq -r . $TMP_FILE > $PROXY_DIR/proxy.json if [ "$i" == "public-proxy" ]; then # COPY LOADBALANCER STATIC CONFIG - cp -av /tmp/$REPOSITORY/$i/haproxy.cfg $PUBLIC_PROXY_DIR/loadbalancer/ ; + mkdir -p $SPEC_PROXY_DIR/loadbalancer; + cp -av /tmp/$i/haproxy.cfg $SPEC_PROXY_DIR/loadbalancer/ ; - # COPY PROXY DNS FILES - - git clone ssh://$GIT_REPO/$ORGANIZATION/proxy-dns.git - - if [ "$DNS_DIR" == "" ] ; then - $DNS_DIR="/etc/system/data/proxy-dns"; - fi - - mkdir -p $DNS_DIR; - cp -arv /tmp/$REPOSITORY/proxy-dns/ $DNS_DIR/ ; fi -fi + if [ "$i" == "smarthost-proxy" ]; then + git clone ssh://$GIT_REPO/$ORGANIZATION/$PROXY_DNS.git /tmp/$PROXY_DNS + + # COPY PROXY DNS FILES + if [ "$PROXY_DNS" == "" ]; then + PROXY_DNS=proxy-dns + fi + + DNS_VOLUMES=$(jq -r .containers[].VOLUMES[].SOURCE /tmp/$i/$PROXY_DNS.json |grep -v '\.') + + for VOLUME in $(echo $DNS_VOLUMES); do + mkdir -p $VOLUME; + done + + DNS_VOLUMES=$(jq -r --arg DEST "/etc/dnsmasq" '.containers[0].VOLUMES[] | select(.DEST | startswith($DEST))' /tmp/$i/$PROXY_DNS.json) + DNS_DIR=$(echo $DNS_VOLUMES | jq -r .SOURCE) + + mkdir -p $DNS_DIR; + cp -rv /tmp/$PROXY_DNS/* $DNS_DIR/ ; + fi done diff --git a/entrypoint.sh b/entrypoint.sh index ba70578..02ad0d7 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,5 +1,17 @@ #!/bin/sh +toUpperCase() { + echo "$*" | tr '[:lower:]' '[:upper:]'; +} +GIT_REPO=$GIT_REPO +ORGANIZATION=$ORGANIZATION + +if [ "$ORGANIZATION" == "" ]; then + ORGANIZATION=format +fi + +PUBLIC_PROXY=$(toUpperCase $PUBLIC_PROXY) +SMARTHOST_PROXY=$(toUpperCase $SMARTHOST_PROXY) GIT_REPOSITORY=$GIT_REPOSITORY HOST=$HOST PORT=$PORT