From db24abae65e72c51447e60e10cf26f45d025b84a Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Date: Sat, 17 Oct 2020 03:14:12 -0400
Subject: [PATCH] Added ability for a single service to holst multiple http
 servers at once with named subservices.

---
 swarm-gen/swarm-gen | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/swarm-gen/swarm-gen b/swarm-gen/swarm-gen
index 30ef9ea..8128c50 100755
--- a/swarm-gen/swarm-gen
+++ b/swarm-gen/swarm-gen
@@ -40,9 +40,12 @@ do
 
           #echo "processing service names..."
           BLOCKS_PROCESSED=""
-          for SERVICE_NAME in ${SERVICE_NAMES[@]};
+          for SERVICE_NAME in ${SERVICE_NAMES[@]}
           do
             SERVICE_ENTRY=$(echo "$SERVICE_ENTRIES" | jq -r ".[\"${SERVICE_NAME}\"]")
+            SUBSERVICE_NAMES=$(echo "${SERVICE_ENTRY}" | jq -r '. | keys' | sed 's/^[[:space:]]*\"//g' | sed 's/[[:space:]]*$//g' | sed 's/[[:space:]]*,$//g' | sed 's/\"$//g'  | grep "swarm-proxy-[^_]\{1,\}_.\{1,\}" | sed 's/^[^_]*_//g' | sort | uniq)
+
+            #echo "Subservice names: ${SUBSERVICE_NAMES[@]}"
             #echo "${SERVICE_ENTRY}"
             #echo "========="
 
@@ -57,10 +60,24 @@ do
               BLOCK_PROCESSED=$(echo "$SERVICE_BLOCK" | sed '/\#\#\# BEGIN SERVICE \#\#\#/d'  | sed '/\#\#\# END SERVICE \#\#\#/d')
               BLOCK_PROCESSED=$(echo "$BLOCK_PROCESSED" | sed "s/\${HOST}/${PROXY_HOST}/g"  | sed "s/\${PORT}/${PROXY_PORT}/g"  | sed "s/\${UPSTREAM}/${PROXY_UPSTREAM}/g"  | sed "s/\${EMAIL}/${PROXY_EMAIL}/g" )
               BLOCKS_PROCESSED="${BLOCK_PROCESSED}"$'\n'"${BLOCKS_PROCESSED}"
+
+              for SUBSERVICE_NAME in ${SUBSERVICE_NAMES[@]}
+              do
+                  PROXY_HOST=$(echo "$SERVICE_ENTRY" | jq -r ".[\"swarm-proxy-host_${SUBSERVICE_NAME}\"]")
+                  PROXY_PORT=$(echo "$SERVICE_ENTRY" | jq -r ".[\"swarm-proxy-port_${SUBSERVICE_NAME}\"]")
+                  PROXY_UPSTREAM=$(echo "$SERVICE_ENTRY" | jq -r ".[\"swarm-proxy-upstream_${SUBSERVICE_NAME}\"]")
+                  PROXY_EMAIL=$(echo "$SERVICE_ENTRY" | jq -r ".[\"swarm-proxy-email_${SUBSERVICE_NAME}\"]")
+
+                  BLOCK_PROCESSED=$(echo "$SERVICE_BLOCK" | sed '/\#\#\# BEGIN SERVICE \#\#\#/d'  | sed '/\#\#\# END SERVICE \#\#\#/d')
+                  BLOCK_PROCESSED=$(echo "$BLOCK_PROCESSED" | sed "s/\${HOST}/${PROXY_HOST}/g"  | sed "s/\${PORT}/${PROXY_PORT}/g"  | sed "s/\${UPSTREAM}/${PROXY_UPSTREAM}/g"  | sed "s/\${EMAIL}/${PROXY_EMAIL}/g" )
+                  BLOCKS_PROCESSED="${BLOCK_PROCESSED}"$'\n'"${BLOCKS_PROCESSED}"
+              done
+
               #echo "Processed:"
               #echo "$BLOCK_PROCESSED"
               #echo "-------------------"
             fi
+
           done
 
 
-- 
GitLab