Files
onix/install/start_beckn_v2.sh
2024-04-02 11:17:51 +05:30

318 lines
11 KiB
Bash
Executable File

#!/bin/bash
source scripts/variables.sh
source scripts/get_container_details.sh
# Function to start a specific service inside docker-compose file
install_package(){
echo "${GREEN}................Installing required packages................${NC}"
bash scripts/package_manager.sh
echo "Package Installation is done"
}
start_container(){
#ignore orphaned containers warning
export COMPOSE_IGNORE_ORPHANS=1
docker-compose -f docker-compose-v2.yml up -d $1
}
update_registry_details() {
if [[ $1 ]];then
if [[ $1 == https://* ]]; then
if [[ $(uname -s) == 'Darwin' ]]; then
registry_url=$(echo "$1" | sed -E 's/https:\/\///')
else
registry_url=$(echo "$1" | sed 's/https:\/\///')
fi
registry_port=443
protocol=https
elif [[ $1 == http://* ]]; then
if [[ $(uname -s) == 'Darwin' ]]; then
registry_url=$(echo "$1" | sed -E 's/http:\/\///')
else
registry_url=$(echo "$1" | sed 's/http:\/\///')
fi
registry_port=80
protocol=http
fi
else
registry_url=registry
registry_port=3030
protocol=http
fi
echo $registry_url
cp $SCRIPT_DIR/../registry_data/config/swf.properties-sample $SCRIPT_DIR/../registry_data/config/swf.properties
config_file="$SCRIPT_DIR/../registry_data/config/swf.properties"
tmp_file=$(mktemp "tempfile.XXXXXXXXXX")
sed "s|REGISTRY_URL|$registry_url|g; s|REGISTRY_PORT|$registry_port|g; s|PROTOCOL|$protocol|g" "$config_file" > "$tmp_file"
mv "$tmp_file" "$config_file"
}
# Function to start the MongoDB, Redis, and RabbitMQ Services
start_support_services(){
#ignore orphaned containers warning
export COMPOSE_IGNORE_ORPHANS=1
echo "${GREEN}................Installing MongoDB................${NC}"
docker-compose -f docker-compose-app.yml up -d mongo_db
echo "MongoDB installation successful"
echo "${GREEN}................Installing RabbitMQ................${NC}"
docker-compose -f docker-compose-app.yml up -d queue_service
echo "RabbitMQ installation successful"
echo "${GREEN}................Installing Redis................${NC}"
docker-compose -f docker-compose-app.yml up -d redis_db
echo "Redis installation successful"
}
install_gateway() {
if [[ $1 && $2 ]]; then
bash scripts/update_gateway_details.sh $1 $2
else
bash scripts/update_gateway_details.sh registry
fi
echo "${GREEN}................Installing Gateway service................${NC}"
start_container gateway
echo "Registering Gateway in the registry"
sleep 10
if [[ $1 && $2 ]]; then
bash scripts/register_gateway.sh $2
else
bash scripts/register_gateway.sh
fi
echo " "
echo "Gateway installation successful"
}
# Function to install Beckn Gateway and Beckn Registry
install_registry(){
if [[ $1 ]]; then
update_registry_details $1
else
update_registry_details
fi
echo "${GREEN}................Installing Registry service................${NC}"
start_container registry
sleep 10
echo "Registry installation successful"
}
# Function to install BAP Protocol Server
install_bap_protocol_server(){
start_support_services
if [[ $1 ]];then
registry_url=$1
bap_subscriber_id=$2
bap_subscriber_key_id=$3
bap_subscriber_url=$4
bash scripts/update_bap_config.sh $registry_url $bap_subscriber_id $bap_subscriber_key_id $bap_subscriber_url
else
bash scripts/update_bap_config.sh
fi
sleep 10
start_container "bap-client"
start_container "bap-network"
sleep 10
echo "Protocol server BAP installation successful"
}
# Function to install BPP Protocol Server with BPP Sandbox
install_bpp_protocol_server_with_sandbox(){
start_support_services
echo "${GREEN}................Installing Sandbox................${NC}"
start_container "sandbox-api"
sleep 5
echo "Sandbox installation successful"
echo "${GREEN}................Installing Webhook................${NC}"
start_container "sandbox-webhook"
sleep
echo "Webhook installation successful"
echo "${GREEN}................Installing Protocol Server for BPP................${NC}"
if [[ $1 ]];then
registry_url=$1
bpp_subscriber_id=$2
bpp_subscriber_key_id=$3
bpp_subscriber_url=$4
bash scripts/update_bpp_config.sh $registry_url $bpp_subscriber_id $bpp_subscriber_key_id $bpp_subscriber_url
else
bash scripts/update_bpp_config.sh
fi
sleep 10
start_container "bpp-client"
start_container "bpp-network"
sleep 10
echo "Protocol server BPP installation successful"
}
# Function to install BPP Protocol Server without Sandbox
install_bpp_protocol_server(){
start_support_services
echo "${GREEN}................Installing Protocol Server for BPP................${NC}"
if [[ $1 ]];then
registry_url=$1
bpp_subscriber_id=$2
bpp_subscriber_key_id=$3
bpp_subscriber_url=$4
webhook_url=$5
bash scripts/update_bpp_config.sh $registry_url $bpp_subscriber_id $bpp_subscriber_key_id $bpp_subscriber_url $webhook_url
else
bash scripts/update_bpp_config.sh
fi
sleep 10
start_container "bpp-client"
start_container "bpp-network"
sleep 10
echo "Protocol server BPP installation successful"
}
text="
The following components will be installed
1. Registry
2. Gateway
3. Sandbox
4. Sandbox Webhook
5. Protocol Server for BAP
6. Protocol Server for BPP
"
# Main script starts here
bash scripts/banner.sh
echo "Welcome to Beckn-ONIX"
echo "$text"
read -p "${GREEN}Do you want to install all the components on the local system? (Y/n): ${NC}" install_all
if [[ $install_all =~ ^[Yy]$ ]]; then
# Install and bring up everything
install_package
install_registry
install_gateway
start_support_services
install_bap_protocol_server
install_bpp_protocol_server_with_sandbox
else
# User selects specific components to install
echo "Please select the components that you want to install"
echo "1. Beckn Registry"
echo "2. Beckn Gateway"
echo "3. BAP Protocol Server"
echo "4. BPP Protocol Server with BPP Sandbox"
echo "5. BPP Protocol Server"
echo "6. Generic Client Layer"
echo "7. Exit"
read -p "Enter your choice (1-6): " user_choice
case $user_choice in
1)
echo "${GREEN}Default Registry URL: $registry_url"
read -p "Do you want to change Registry URL? (Y/N): ${NC}" change_url
if [[ $change_url =~ ^[Yy]$ ]]; then
read -p "Enter publicly accessible registry URL: " registry_url
if [[ $registry_url =~ /$ ]]; then
new_registry_url=${registry_url%/}
else
new_registry_url=$registry_url
fi
install_package
install_registry $new_registry_url
#install_gateway $new_registry_url $gateway_url
else
install_package
install_registry
#install_gateway
fi
;;
2)
echo "${GREEN}Default Registry URL: $registry_url"
echo "Default Gateway URL will be docker URL"
read -p "Do you want to change Registry and Gateway URL? (Y/N): ${NC}" change_url
if [[ $change_url =~ ^[Yy]$ ]]; then
read -p "Enter publicly accessible registry URL: " registry_url
read -p "Enter publicly accessible gateway URL: " gateway_url
if [[ $registry_url =~ /$ ]]; then
new_registry_url=${registry_url%/}
else
new_registry_url=$registry_url
fi
if [[ $gateway_url =~ /$ ]]; then
gateway_url=${gateway_url%/}
fi
install_package
install_gateway $new_registry_url $gateway_url
else
install_package
install_gateway
fi
;;
3)
echo "${GREEN}................Installing Protocol Server for BAP................${NC}"
read -p "Enter BAP Subscriber ID: " bap_subscriber_id
read -p "Enter BAP Subscriber URL: " bap_subscriber_url
# Ask the user if they want to change the registry_url
read -p "Do you want to change the registry_url? (${GREEN}Press Enter to accept default: $beckn_registry_url${NC}): " custom_registry_url
registry_url=${custom_registry_url:-$beckn_registry_url}
bap_subscriber_key_id=$bap_subscriber_id-key
install_package
install_bap_protocol_server $registry_url $bap_subscriber_id $bap_subscriber_key_id $bap_subscriber_url
;;
4)
read -p "Enter BPP Subscriber ID: " bpp_subscriber_id
read -p "Enter BPP Subscriber URL: " bpp_subscriber_url
# Ask the user if they want to change the registry_url
read -p "Do you want to change the registry_url? (${GREEN}Press Enter to accept default: $beckn_registry_url${NC}): " custom_registry_url
registry_url=${custom_registry_url:-$beckn_registry_url}
bpp_subscriber_key_id=$bpp_subscriber_id-key
install_package
install_bpp_protocol_server_with_sandbox $registry_url $bpp_subscriber_id $bpp_subscriber_key_id $bpp_subscriber_url
;;
5)
read -p "Enter BPP Subscriber ID: " bpp_subscriber_id
read -p "Enter BPP Subscriber URL: " bpp_subscriber_url
read -p "Enter Webhook URL: " webhook_url
# Ask the user if they want to change the registry_url
read -p "Do you want to change the registry_url? (${GREEN}Press Enter to accept default: $beckn_registry_url${NC}): " custom_registry_url
registry_url=${custom_registry_url:-$beckn_registry_url}
bpp_subscriber_key_id=$bpp_subscriber_id-key
install_package
install_bpp_protocol_server $registry_url $bpp_subscriber_id $bpp_subscriber_key_id $bpp_subscriber_url $webhook_url
;;
6)
echo "${GREEN}................Installing GENERIC CLIENT LAYER................${NC}"
read -p "Enter BAP Subscriber ID: " bap_subscriber_id
read -p "Enter BAP Subscriber URL: " bap_subscriber_url
read -p "Enter BAP Client URL: " bap_client_url
bash scripts/generic-client-layer.sh $bap_subscriber_id $bap_subscriber_url $bap_client_url
start_container "generic-client-layer"
;;
7)
echo "Exiting Beckn-ONIX"
exit 0
;;
*)
echo "Invalid choice. Exiting Beckn-ONIX."
exit 1
;;
esac
fi