Files
onix/install/scripts/update_gateway_details.sh
2024-05-10 17:28:08 +05:30

120 lines
4.5 KiB
Bash
Executable File

#!/bin/bash
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source $SCRIPT_DIR/get_container_details.sh
gateway_id=gateway
gateway_port=4030
protocol=http
reg_url=http://$1:3030/subscribers/lookup
registry_id=registry
registry_url=http://registry:3030
update_network_json(){
cp $SCRIPT_DIR/../gateway_data/config/networks/onix.json-sample $SCRIPT_DIR/../gateway_data/config/networks/onix.json
networks_config_file="$SCRIPT_DIR/../gateway_data/config/networks/onix.json"
tmp_file=$(mktemp "tempfile.XXXXXXXXXX")
sed " s|GATEWAY_ID|$gateway_id|g; s|REGISTRY_ID|$registry_id|g; s|REGISTRY_URL|$registry_url|g" "$networks_config_file" > "$tmp_file"
mv "$tmp_file" "$networks_config_file"
docker run --rm -v $SCRIPT_DIR/../gateway_data/config:/source -v gateway_data_volume:/target busybox cp -r /source/networks /target/
}
get_details_registry() {
# Make the curl request and store the output in a variable
response=$(curl --location --request POST "$reg_url" \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "LREG"
}')
# Check if the curl command was successful (HTTP status code 2xx)
if [ $? -eq 0 ]; then
# Extract signing_public_key and encr_public_key using jq
signing_public_key=$(echo "$response" | jq -r '.[0].signing_public_key')
encr_public_key=$(echo "$response" | jq -r '.[0].encr_public_key')
subscriber_url=$(echo "$response" | jq -r '.[0].subscriber_url')
else
echo "Error: Unable to fetch data from the server."
fi
}
update_gateway_config() {
# Print the extracted keys
# echo "Signing Public Key: $signing_public_key"
# echo "Encryption Public Key: $encr_public_key"
# echo "URL $subscriber_url"
cp $SCRIPT_DIR/../gateway_data/config/swf.properties-sample $SCRIPT_DIR/../gateway_data/config/swf.properties
config_file="$SCRIPT_DIR/../gateway_data/config/swf.properties"
tmp_file=$(mktemp "tempfile.XXXXXXXXXX")
#sed " s|SUBSCRIBER_ID|$gateway_id|g; s|SIGNING_PUBLIC_KEY|$signing_public_key|g; s|ENCRYPTION_PUBLIC_KEY|$encr_public_key|g; s|GATEWAY_URL|$gateway_id|g; s|GATEWAY_PORT|$gateway_port|g; s|PROTOCOL|$protocol|g; s|REGISTRY_URL|$subscriber_url|g" "$config_file" > "$tmp_file"
sed " s|SUBSCRIBER_ID|$gateway_id|g; s|GATEWAY_URL|$gateway_id|g; s|GATEWAY_PORT|$gateway_port|g; s|PROTOCOL|$protocol|g; s|REGISTRY_URL|$subscriber_url|g" "$config_file" > "$tmp_file"
mv "$tmp_file" "$config_file"
docker volume create gateway_data_volume
docker volume create gateway_database_volume
docker run --rm -v $SCRIPT_DIR/../gateway_data/config:/source -v gateway_data_volume:/target busybox cp /source/{envvars,logger.properties,swf.properties} /target/
update_network_json
}
# if [[ $1 == https://* ]]; then
# reg_url=$1/subscribers/lookup
# get_details_registry $reg_url
# else
# service_name=$1
# if [[ $(uname -s) == 'Darwin' ]]; then
# ip=localhost
# elif [[ $(systemd-detect-virt) == 'wsl' ]]; then
# ip=$(hostname -I | awk '{print $1}')
# else
# ip=$(get_container_ip $service_name)
# fi
# reg_url=http://$ip:3030/subscribers/lookup
# get_details_registry $reg_url
# fi
echo "Registry: $1 && Gateway: $2"
if [[ $1 ]]; then
registry_url=$1
if [[ $1 == https://* ]]; then
if [[ $(uname -s) == 'Darwin' ]]; then
registry_id=$(echo "$1" | sed -E 's/https:\/\///')
else
registry_id=$(echo "$1" | sed 's/https:\/\///')
fi
elif [[ $1 == http://* ]]; then
if [[ $(uname -s) == 'Darwin' ]]; then
registry_id=$(echo "$1" | sed -E 's/http:\/\///')
else
registry_id=$(echo "$1" | sed 's/http:\/\///')
fi
fi
if [[ $registry_id = "registry:3030" ]]; then
registry_id="registry"
fi
fi
if [[ $2 ]]; then
if [[ $2 == https://* ]]; then
if [[ $(uname -s) == 'Darwin' ]]; then
gateway_id=$(echo "$2" | sed -E 's/https:\/\///')
else
gateway_id=$(echo "$2" | sed 's/https:\/\///')
fi
gateway_port=443
protocol=https
update_gateway_config
elif [[ $2 == http://* ]]; then
if [[ $(uname -s) == 'Darwin' ]]; then
gateway_id=$(echo "$2" | sed -E 's/http:\/\///')
else
gateway_id=$(echo "$2" | sed 's/http:\/\///')
fi
gateway_port=80
protocol=http
update_gateway_config
fi
else
update_gateway_config
fi