| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -91,14 +91,136 @@ debug() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				## Start prevously deployed firewall rules depend on framework scheduler startup at first time
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				add_json_target(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if [ -d /etc/user/config/services ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    cd /etc/user/config/services
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for FIREWALL in $(ls firewall*.json); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec $FIREWALL start &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        local TASK_NAME=$1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ -n "$TASK_NAME" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            TASK="upgrade-$TASK_NAME"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        install -m 664 -g 65534 /dev/null $SHARED/output/$TASK.json
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        echo $JSON_TARGET | base64 -d >$SHARED/output/$TASK.json
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				backup_query_state() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "backup_query_state"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				backup_set_service() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "backup_set_service"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				backup_set_client() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    NAME="$1"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    SIZE="$2"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    VPN="$3"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    SSH_PORT="$4"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    SSH_USER="$5"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    SSH_PASSWORD="$6"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    OPERATION="$7"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    VPN_KEY="$8"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if [ "$OPERATION" == "DELETE" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        # delete service
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ -f "/etc/user/config/services/service-backup-client-$NAME.json" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "service-backup-client-$NAME.json stop force dns-remove"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            $service_exec service-backup-client-$NAME.json stop force dns-remove
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            rm -f /etc/user/config/services/service-backup-client-$NAME.json
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "Service backup client $NAME deleted."
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ -z "$SSH_PORT" ] ; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            SSH_PORT=20022
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ "$VPN" == "true" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            NETWORK=$NAME
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            PORT='"PORTS": [{"SOURCE":"null","DEST":"'$SSH_PORT'","TYPE":"tcp"}],'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            NETWORK="host"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            PORT='"PORTS": [{"SOURCE":"'$SSH_PORT'","DEST":"'$SSH_PORT'","TYPE":"tcp"}],'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        ADDITIONAL=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        ADDITIONAL='"EXTRA": "--label logging=promtail_user --label logging_jobname=containers --restart=always", "PRE_START": [], "DEPEND": [], "CMD": ""'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        ENVS='"ENVS": [{"SSH_USER":"'$SSH_USER'"},{"SSH_PORT":"'$SSH_PORT'"},{"SSH_PASSWORD":"'$SSH_PASSWORD'"},{"VPN_CLIENT_KEY":"'$VPN_KEY'"}],'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        echo '{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "main": {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "SERVICE_NAME": "'$NAME'"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "containers": [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "IMAGE": "alpine:latest",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "NAME": "'$NAME'-init",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "UPDATE": "true",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "MEMORY": "64M",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "EXTRA": "--rm",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "VOLUMES":[
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "SOURCE": "USER_DATA",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "DEST": "/etc/user/data/",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "TYPE": "rw"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            ],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "ENTRYPOINT": "sh -c",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "CMD": "mkdir -p /etc/user/data/backup/clients/'$NAME'/backup && /etc/user/data/backup/clients/'$NAME'/ssh",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "POST_START": []
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "IMAGE": "safebox/backup-client:latest",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "NAME": "'$NAME'",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "UPDATE": "true",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "MEMORY": "64M",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "NETWORK": "'$NETWORK'",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    '$ADDITIONAL',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    '$ENVS'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    '$PORT'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "VOLUMES":[
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        { 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "SOURCE": "/etc/user/data/backup/clients/'$NAME'/backup",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "DEST": "/backup",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "TYPE": "rw"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        { 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "SOURCE": "/etc/user/data/backup/clients/'$NAME'/ssh",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "DEST": "/home/'$SSH_USER'/",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "TYPE": "rw"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            ],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    "POST_START": []
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    ]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 }' | jq -r . >/etc/user/config/services/service-backup-client-$NAME.json
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "service-backup-client-$NAME.json stop force dns-remove"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec service-backup-client-$NAME.json start &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				backup_challenge_clients() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "backup_challenge_clients"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				restore_from_backup() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "restore_from_backup"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				create_htpasswd_file() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -111,8 +233,6 @@ create_htpasswd_file() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				install -m 664 -g 65534 /dev/null
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				deploy_additionals() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local DIR="$1"
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -160,14 +280,80 @@ remove_additionals() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    debug "UNINSTALL: $NAME"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # delete firewall rules
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    FIREWALLS=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    FIREWALLS="$(ls $SERVICE_DIR/firewall-*.json | grep $NAME)"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for FIREWALL in $(echo $FIREWALLS); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        cat $FIREWALL | jq '.containers[] |= (
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (.ENVS | map(has("OPERATION")) | any) then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # If any entry has OPERATION key, update it
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            .ENVS = [.ENVS[] | if has("OPERATION") then {"OPERATION": "DELETE"} else . end]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # If no entry has OPERATION key, add new entry
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            .ENVS += [{"OPERATION": "DELETE"}]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        )' >$FIREWALL.tmp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "$service_exec $FIREWALL.tmp start info"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec $FIREWALL.tmp start info
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        rm $FIREWALL.tmp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # delete domains
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    DOMMAINS=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    DOMAINS="$(ls $SERVICE_DIR/domain-*.json | grep $NAME)"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for DOMAIN in $(echo $DOMAINS); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        cat $DOMAIN | jq '.containers[] |= (
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (.ENVS | map(has("OPERATION")) | any) then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # If any entry has OPERATION key, update it
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            .ENVS = [.ENVS[] | if has("OPERATION") then {"OPERATION": "DELETE"} else . end]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # If no entry has OPERATION key, add new entry
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            .ENVS += [{"OPERATION": "DELETE"}]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        )' >$DOMAIN.tmp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "$service_exec $DOMAIN.tmp start info"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec $DOMAIN.tmp start info
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        rm $DOMAIN.tmp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # remove related directories and files
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # get volume destinations
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    DESTINATIONS=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    VOLUMES=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    DESTINATIONS=$(cat $SERVICE_DIR/service-$NAME.json | jq -r '[.containers[] | select(has("VOLUMES")) | .VOLUMES[] | select(.SHARED != "true") | .SOURCE] | unique[]' | grep $NAME)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for DESTINATION in $(echo $DESTINATIONS); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ -d "$DESTINATION" ] || [ -f "$DESTINATION" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            rm -rf $DESTINATION
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "deleted directory or file: $DESTINATION"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    ENV_FILES=$(cat $SERVICE_DIR/service-$NAME.json | jq -r '[.containers[] | select(has("ENV_FILES")) | .ENV_FILES[]] | unique[]')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for ENV_FILE in $(echo $ENV_FILES); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ -f "$ENV_FILE" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            rm -rf $ENV_FILE
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "deleted enviroment file: $ENV_FILE"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    VOLUMES=$(cat $SERVICE_DIR/service-$NAME.json | jq -r '[.containers[] | select(has("VOLUMES")) | .VOLUMES[] | select(.SHARED != "true") | .SOURCE] | unique[]' | grep -vE 'USER|SYSTEM')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # stop service
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # force - remove stopped container, docker rm
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    debug "$service_exec service-$NAME.json stop force dns-remove"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    $service_exec service-$NAME.json stop force dns-remove
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for VOLUME in $(echo $VOLUMES | grep -vE 'USER|SYSTEM|SHARED'); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ "$(echo $VOLUME | cut -d '/' -f1)" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            docker volume rm $VOLUME
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "deleted volume: $VOLUME"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # remove service files
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    rm $SERVICE_DIR/*"-"$NAME.json # service, domain, etc.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    rm $SECRET_DIR/$NAME/$NAME.json
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				get_repositories() {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -511,7 +697,7 @@ check_update() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "$REMOTE_URL not accessible, http error code: $CURL_CHECK_CODE"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        echo "Force image pull has started without digest check..."
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        DOCKER_PULL="docker pull $IMAGE"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        DOCKER_PULL="/usr/bin/docker pull $IMAGE"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        eval $DOCKER_PULL
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        STATUS=$?
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "PULL STATUS: $STATUS"
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -525,7 +711,19 @@ check_update() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				upgrade_scheduler() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    DOCKER_START="--entrypoint=sh $DOCKER_REGISTRY_URL/$FRAMEWORK_SCHEDULER_IMAGE:$FRAMEWORK_SCHEDULER_VERSION -c '/scripts/upgrade.sh'"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # Upgrading framework scheduler
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    debug "Upgrading framework scheduler..."
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    /usr/bin/docker pull "$DOCKER_REGISTRY_URL/$FRAMEWORK_SCHEDULER_IMAGE:$FRAMEWORK_SCHEDULER_VERSION"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    DOCKER_START="$DOCKER_REGISTRY_URL/$FRAMEWORK_SCHEDULER_IMAGE:$FRAMEWORK_SCHEDULER_VERSION"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if [ "$DEBUG_MODE" == "true" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        SET_DEBUG_MODE="--env DEBUG_MODE=true"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        SET_DEBUG_MODE=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    FRAMEWORK_SCHEDULER_NAME="$FRAMEWORK_SCHEDULER_NAME-$(head /dev/urandom | tr -dc '0-9' | head -c 6)"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    DOCKER_RUN="/usr/bin/docker run -d \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        -v SHARED:/var/tmp/shared \
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -537,6 +735,8 @@ upgrade_scheduler() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-v USER_CONFIG:/etc/user/config \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-v USER_SECRET:/etc/user/secret \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--restart=always \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        --name $FRAMEWORK_SCHEDULER_NAME \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $SET_DEBUG_MODE \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  	--env WEBSERVER_PORT=$WEBSERVER_PORT \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  	--network $FRAMEWORK_SCHEDULER_NETWORK \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--env RUN_FORCE=$RUN_FORCE \
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -548,18 +748,21 @@ upgrade_scheduler() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				upgrade() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local NAME=$1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if [ "$NAME" == "web-installer" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "$service_exec service-framework.containers.webserver start info"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec service-framework.containers.webserver stop force
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec service-framework.containers.webserver start info &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if [ "$NAME" == "webserver" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "$service_exec service-framework.containers.$NAME stop force"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec service-framework.containers.$NAME stop force
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "$service_exec service-framework.containers.$NAME start info"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec service-framework.containers.$NAME start info &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "$service_exec $NAME.json start info"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "$service_exec $NAME.json stop force"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec $NAME.json stop force
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        debug "$service_exec $NAME.json start info"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec $NAME.json start info &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    PID=$!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				execute_task() {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -601,7 +804,13 @@ execute_task() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if [ "$REQUEST" == "requested" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                echo "New certificate for $DOMAIN is requested."
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                touch /etc/system/data/ssl/keys/$DOMAIN/new_certificate
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                echo "Modifying $DOMAIN_FILE.json for $DOMAIN"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                jq '.containers[0].ENVS |= map(if has("OPERATION") then .OPERATION = "MODIFY" else . end) | \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                .containers[0].ENVS |= map(if has("DOMAIN") then .DOMAIN = "'$DOMAIN'" else . end)' \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                /etc/user/config/services/$DOMAIN_FILE.json > /tmp/$DOMAIN_FILE.json && \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mv /tmp/$DOMAIN_FILE.json /etc/user/config/services/$DOMAIN_FILE.json
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                debug "$service_exec $DOMAIN_FILE.json start info"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                $service_exec $DOMAIN_FILE.json start info &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        JSON_TARGET=$B64_JSON
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -731,18 +940,21 @@ execute_task() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    elif [ "$TASK_NAME" == "deployments" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        DEPLOYMENTS=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        TREES=$(get_repositories)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for TREE in $TREES; do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for TREE in "$TREES"; do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            APPS=$(jq -rc '.apps[]' $TREE)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for APP in $APPS; do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            #for APP in "$APPS"; do #space problem
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            while IFS= read -r APP; do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                APP_NAME=$(echo "$APP" | jq -r '.name')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                APP_SUBTITLE="$(echo "$APP" | jq -r '.subtitle')"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                APP_VERSION=$(echo "$APP" | jq -r '.version')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                APP_ICON=$(echo "$APP" | jq -r '.icon')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if [ "$DEPLOYMENTS" != "" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    SEP=","
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    SEP=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                DEPLOYMENTS=$DEPLOYMENTS$SEP'"'$APP_NAME'": "'$APP_VERSION'"'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                DEPLOYMENTS="$DEPLOYMENTS"$SEP'"'$APP_NAME'":{"subtitle":"'"$APP_SUBTITLE"'","version":"'"$APP_VERSION"'","icon":"'"$APP_ICON"'"}'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            done < <(echo "$APPS") # preserve DEPLOYMENTS variable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ "$DEPLOYMENTS" == "" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            DEPLOYMENTS='"deployments": "NONE"'
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -776,20 +988,22 @@ execute_task() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for TREE in $TREES; do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            APPS=$(jq -rc '.apps[]' $TREE)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for APP in $APPS; do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            #for APP in $APPS; do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            while IFS= read -r APP; do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                APP_NAME=$(echo "$APP" | jq -r '.name' | awk '{print tolower($0)}')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                APP_SUBTITLE=$(echo "$APP" | jq -r '.subtitle')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                APP_VERSION=$(echo "$APP" | jq -r '.version')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                APP_DIR=$(dirname $TREE)"/"$APP_NAME
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                debug "$APP_TEMPLATE"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if [ "$APP_NAME" == "$DEPLOY_NAME" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if [ "$DEPLOY_ACTION" == "ask" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        APP_TEMPLATE=$APP_DIR"/template.json"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        TEMPLATE=$(cat $APP_TEMPLATE | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "STATUS": "0", "TEMPLATE": "'$TEMPLATE'" }' | jq -r . | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        debug "$APP_TEMPLATE"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        JSON_TARGET=$(echo '{"DATE":"'$DATE'","STATUS": "0","TEMPLATE":"'$TEMPLATE'"}' | jq -r . | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    elif [ "$DEPLOY_ACTION" == "reinstall" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        APP_TEMPLATE=$APP_DIR"/template.json"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        TEMPLATE=$(cat $APP_TEMPLATE)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        for LINE in $(cat $SERVICE_DIR/service-$DEPLOY_NAME.json | jq -rc '.containers[].ENVS[] | to_entries[]'); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        for LINE in $(cat $SERVICE_DIR/service-$DEPLOY_NAME.json | jq -rc '.containers[].ENVS[] | to_entries[]' 2>/dev/null); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            KEY=$(echo $LINE | jq -r .key)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            VALUE=$(echo $LINE | jq -r .value)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            debug "$KEY: $VALUE"
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -798,14 +1012,14 @@ execute_task() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            TEMPLATE=$(echo "$TEMPLATE" | jq -r '.fields |= map(if .key == "'$KEY'" then .value = "'$VALUE'" else . end)')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        # write ENV value from domain file to template value by key name
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        for LINE in $(cat $SERVICE_DIR/domain-$DEPLOY_NAME.json | jq -rc '.containers[].ENVS[] | to_entries[]'); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        for LINE in $(cat $SERVICE_DIR/domain-$DEPLOY_NAME.json | jq -rc '.containers[].ENVS[] | to_entries[]' 2>/dev/null); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            KEY=$(echo $LINE | jq -r .key)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            VALUE=$(echo $LINE | jq -r .value)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            debug "$KEY: $VALUE"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            TEMPLATE=$(echo "$TEMPLATE" | jq -r '.fields |= map(if .key == "'$KEY'" then .value = "'$VALUE'" else . end)')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        # write ENV value from secret file to template value by key name
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        for LINE in $(cat $SECRET_DIR/$DEPLOY_NAME/$DEPLOY_NAME.json | jq -rc '.[] | to_entries[]'); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        for LINE in $(cat $SECRET_DIR/$DEPLOY_NAME/$DEPLOY_NAME.json | jq -rc '.[] | to_entries[]' 2>/dev/null); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            KEY=$(echo $LINE | jq -r .key)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            VALUE=$(echo $LINE | jq -r .value)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            debug "$KEY: $VALUE"
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -831,6 +1045,18 @@ execute_task() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        DEPLOY_PAYLOAD=$(echo "$JSON" | jq -r .PAYLOAD) # base64 list of key-value pairs in JSON
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        deploy_additionals "$APP_DIR" "$DEPLOY_NAME" "$DEPLOY_PAYLOAD"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        sh /scripts/check_pid.sh "$PID" "$SHARED" "deploy-$DEPLOY_NAME" "$DATE" "$DEBUG" &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    elif [ "$DEPLOY_ACTION" == "edit" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        JSON_TARGET=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        DEPLOY_PAYLOAD=$(echo "$JSON" | jq -r .PAYLOAD) # base64 list of key-value pairs in JSON
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        # stop service before edit
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        debug "$service_exec service-$DEPLOY_NAME.json stop force"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        $service_exec service-$DEPLOY_NAME.json stop force
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        deploy_additionals "$APP_DIR" "$DEPLOY_NAME" "$DEPLOY_PAYLOAD"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        sh /scripts/check_pid.sh "$PID" "$SHARED" "deploy-$DEPLOY_NAME" "$DATE" "$DEBUG" &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    elif [ "$DEPLOY_ACTION" == "uninstall" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        remove_additionals "$APP_DIR" "$DEPLOY_NAME"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        # uninstall has finished
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -840,7 +1066,7 @@ execute_task() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        JSON_TARGET=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            done < <(echo "$APPS") # preserve variables
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    elif [ "$TASK_NAME" == "repositories" ]; then
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -905,18 +1131,78 @@ execute_task() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        RESULT=$(echo "$CONTAINERS" | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "RESULT": "'$RESULT'" }' | jq -r . | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    elif [ "$TASK_NAME" == "backup" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        TASK_TYPE=$(echo $B64_JSON | base64 -d | jq -r '.TASK_TYPE)')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ "$TASK_TYPE" == "backup_query_state" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "task type is backup_query_state"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        elif [ "$TASK_TYPE" == "backup_set_service" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "task type is backup_set_service"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        elif [ "$TASK_TYPE" == "backup_set_client" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            NAME="$(echo $B64_JSON | base64 -d | jq -r '.BACKUP_CLIENT_NAME')"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            SIZE="$(echo $B64_JSON | base64 -d | jq -r '.BACKUP_CLIENT_SIZE')"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            VPN="$(echo $B64_JSON | base64 -d | jq -r '.BACKUP_CLIENT_VPN')"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            SSH_PORT="$(echo $B64_JSON | base64 -d | jq -r '.BACKUP_CLIENT_SSH_PORT')"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            SSH_USER="$(echo $B64_JSON | base64 -d | jq -r '.BACKUP_CLIENT_SSH_USER')"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            SSH_PASSWORD="$(echo $B64_JSON | base64 -d | jq -r '.BACKUP_CLIENT_SSH_PASSWORD')"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            OPERATION="$(echo $B64_JSON | base64 -d | jq -r '.BACKUP_CLIENT_OPERATION')"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "task type is backup_set_client for $NAME"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "   size: $SIZE"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "   vpn: $VPN"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "   ssh_port: $SSH_PORT"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "   ssh_user: $SSH_USER"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "   ssh_password: $SSH_PASSWORD"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            debug "   operation: $OPERATION"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            backup_set_client "$NAME" "$SIZE" "$VPN" "$SSH_PORT" "$SSH_USER" "$SSH_PASSWORD" "$OPERATION"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        elif [ "$TASK_TYPE" == "backup_challenge_clients" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "task type is backup_challenge_clients"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        elif [ "$TASK_TYPE" == "restore_from_backup" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "task type is restore_from_backup"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "Unknown task type: $TASK_TYPE"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        RESULT=$(echo "$CONTAINERS" | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "RESULT": "'$RESULT'" }' | jq -r . | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    elif [ "$TASK_NAME" == "upgrade" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        JSON="$(echo $B64_JSON | base64 -d)"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        NAME=$(echo "$JSON" | jq -r .NAME | awk '{print tolower($0)}')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if [ "$NAME" == "framework" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            JSON_TARGET=$(echo '{"DATE":"'$DATE'","INSTALL_STATUS":0}' | jq -r . | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            add_json_target $NAME
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "Upgrading service: webserver"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            upgrade webserver
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "Upgrading framework scheduler..."
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "Cleaning temporary files..."
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            rm -rf /var/tmp/shared/input/*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            rm -rf /var/tmp/shared/output/*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            upgrade_scheduler
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            upgrade "web-installer"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "Removing old framework scheduler container..."
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            JSON_TARGET=$(echo '{"DATE":"'$DATE'","INSTALL_STATUS":1}' | jq -r . | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            add_json_target $NAME
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            sleep 1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            /usr/bin/docker rm -f $HOSTNAME
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            #CONTAINERS=$(docker ps -a --format '{{.Names}} {{.Status}}' | grep -E 'framework-scheduler|webserver')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            echo "Upgrading service: $NAME"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            upgrade "$NAME"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            #CONTAINERS=$(docker ps -a --format '{{.Names}} {{.Status}}' | grep -w "$NAME")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        CONTAINERS=$(docker ps -a --format '{{.Names}} {{.Status}}' | grep -E 'framework-scheduler|webserver')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        RESULT=$(echo "$CONTAINERS" | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "RESULT": "'$RESULT'" }' | jq -r . | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        #RESULT=$(echo "$CONTAINERS" | base64 -w0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        sh /scripts/check_pid.sh "$PID" "$SHARED" "$TASK_NAME-$NAME" "$DATE" "$DEBUG" &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if [ "$TASK_NAME" != "check_vpn" ]; then
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -924,9 +1210,7 @@ execute_task() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if [ "$JSON_TARGET" != "" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        #redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $TASK "$JSON_TARGET"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        install -m 664 -g 65534 /dev/null $SHARED/output/$TASK.json
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        echo $JSON_TARGET | base64 -d >$SHARED/output/$TASK.json
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        add_json_target
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -996,39 +1280,15 @@ check_redis_availability() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				start_framework_scheduler() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if [ "$DEBUG_MODE" == "true" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        DOCKER_START="--entrypoint=sh $DOCKER_REGISTRY_URL/$FRAMEWORK_SCHEDULER_IMAGE:$FRAMEWORK_SCHEDULER_VERSION -c 'sleep 86400'"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        DOCKER_START="$DOCKER_REGISTRY_URL/$FRAMEWORK_SCHEDULER_IMAGE:$FRAMEWORK_SCHEDULER_VERSION"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    DOCKER_RUN="/usr/bin/docker run -d \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        -v SHARED:/var/tmp/shared \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  	-v /var/run/docker.sock:/var/run/docker.sock \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-v SYSTEM_DATA:/etc/system/data \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-v SYSTEM_CONFIG:/etc/system/config \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-v SYSTEM_LOG:/etc/system/log \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-v USER_DATA:/etc/user/data \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-v USER_CONFIG:/etc/user/config \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-v USER_SECRET:/etc/user/secret \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--restart=always \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--name $FRAMEWORK_SCHEDULER_NAME \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  	--env WEBSERVER_PORT=$WEBSERVER_PORT \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  	--network $FRAMEWORK_SCHEDULER_NETWORK \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--env RUN_FORCE=$RUN_FORCE \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--env DOCKER_REGISTRY_URL=$DOCKER_REGISTRY_URL \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  $DOCKER_START"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    eval "$DOCKER_RUN"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				### SYSTEM INITIALIZATION ###
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				## Start prevously deployed firewall rules depend on framework scheduler startup at first time
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				## DOCKER NETWORK VARIABLES
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				## FILESYSTEM VARIABLES
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				## PORTS VARIABLES
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				### RESTART SCHEDULER IF NEEDED
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if [ -d /etc/user/config/services ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    cd /etc/user/config/services
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for FIREWALL in $(ls firewall*.json); do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        $service_exec $FIREWALL start &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    done
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				SN=$(check_subnets)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if [ "$SN" != "1" ]; then
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -1045,7 +1305,7 @@ fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				VOL=$(check_volumes)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if [ "$VOL" != "1" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    start_framework_scheduler
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    upgrade_scheduler
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    /usr/bin/docker rm -f $HOSTNAME
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -1057,15 +1317,12 @@ if [ "$DF" != "1" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#RS=$(docker ps | grep redis-server)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				WS=$(docker ps | grep webserver)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				WS=$(/usr/bin/docker ps | grep -o webserver)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#if [[ "$WS" == "" && "$RS" == "" ]]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if [ "$WS" == "" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # START SERVICES
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    #$service_exec service-framework.containers.redis-server start &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "Starting webserver"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    $service_exec service-framework.containers.webserver start &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    sleep 5
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				 
 |