2121echo -e " ${YELLOW} Step 1: Setting up Beckn network services...${NC} "
2222
2323# Check if install directory exists
24- if [ ! -d " ./install" ]; then
25- echo -e " ${RED} Error: install directory not found.${NC} "
24+ # if [ ! -d "./install" ]; then
25+ # echo -e "${RED}Error: install directory not found.${NC}"
26+ # exit 1
27+ # fi
28+
29+ # Make the installer executable
30+ chmod +x ./install/beckn-onix.sh
31+
32+ # Navigate to install directory and run setup
33+ cd install
34+
35+ # Auto-select option 3 (local setup) for the installer
36+ # echo -e "${GREEN}Running local network setup...${NC}"
37+ # echo "3" | ./beckn-onix.sh
38+
39+ cd ..
40+
41+ # Wait for services to stabilize
42+ echo -e " ${YELLOW} Waiting for services to be ready...${NC} "
43+ sleep 15
44+
45+ # Step 2: Configure Vault for key management
46+ echo -e " ${YELLOW} Step 2: Setting up Vault for key management...${NC} "
47+
48+ # Check if Vault is running, if not start it
49+ if ! docker ps | grep -q " vault" ; then
50+ echo -e " ${BLUE} Starting Vault container...${NC} "
51+ docker run -d \
52+ --name vault \
53+ --cap-add=IPC_LOCK \
54+ -e VAULT_DEV_ROOT_TOKEN_ID=root \
55+ -e VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200 \
56+ -p 8200:8200 \
57+ hashicorp/vault:latest > /dev/null 2>&1
58+
59+ # Wait for Vault to be ready
60+ echo -e " ${BLUE} Waiting for Vault to start...${NC} "
61+ for i in {1..30}; do
62+ if docker exec -e VAULT_ADDR=http://127.0.0.1:8200 vault vault status > /dev/null 2>&1 ; then
63+ echo -e " ${GREEN} ✓ Vault is ready${NC} "
64+ break
65+ fi
66+ if [ $i -eq 30 ]; then
67+ echo -e " ${RED} Error: Vault failed to start${NC} "
68+ exit 1
69+ fi
70+ sleep 1
71+ done
72+ fi
73+
74+ # Configure Vault with error handling
75+ echo -e " ${BLUE} Configuring Vault policies...${NC} "
76+
77+ # Enable AppRole auth
78+ if ! docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
79+ vault auth list 2> /dev/null | grep -q " approle" ; then
80+ docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
81+ vault auth enable approle 2> /dev/null || {
82+ echo -e " ${YELLOW} AppRole already enabled or error occurred${NC} "
83+ }
84+ fi
85+
86+ # Create policy
87+ echo ' path "beckn/*" { capabilities = ["create", "read", "update", "delete", "list"] }' | \
88+ docker exec -i -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
89+ vault policy write beckn-policy - > /dev/null 2>&1 || {
90+ echo -e " ${YELLOW} Policy already exists or updated${NC} "
91+ }
92+
93+ # Create role
94+ docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
95+ vault write auth/approle/role/beckn-role \
96+ token_policies=" beckn-policy" \
97+ token_ttl=24h \
98+ token_max_ttl=48h > /dev/null 2>&1 || {
99+ echo -e " ${YELLOW} Role already exists or updated${NC} "
100+ }
101+
102+ # Get Vault credentials with error handling
103+ echo -e " ${BLUE} Getting Vault credentials...${NC} "
104+ ROLE_ID=$( docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
105+ vault read -field=role_id auth/approle/role/beckn-role/role-id 2> /dev/null)
106+
107+ if [ -z " $ROLE_ID " ]; then
108+ echo -e " ${RED} Error: Failed to get ROLE_ID from Vault${NC} "
26109 exit 1
27110fi
28111
112+ SECRET_ID=$( docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
113+ vault write -field=secret_id -f auth/approle/role/beckn-role/secret-id 2> /dev/null)
114+
115+ if [ -z " $SECRET_ID " ]; then
116+ echo -e " ${RED} Error: Failed to get SECRET_ID from Vault${NC} "
117+ exit 1
118+ fi
119+
120+ echo -e " ${GREEN} ✓ Got Vault credentials:${NC} "
121+ echo -e " ROLE_ID: ${ROLE_ID: 0: 20} ..."
122+ echo -e " SECRET_ID: ${SECRET_ID: 0: 20} ..."
123+
124+ # Enable KV v2 secrets engine
125+ docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
126+ vault secrets enable -path=beckn kv-v2 > /dev/null 2>&1 || {
127+ echo -e " ${YELLOW} Secrets engine already enabled${NC} "
128+ }
129+
130+ echo -e " ${GREEN} ✓ Vault configured successfully${NC} "
131+
132+ # Seed the keys for BAP network
133+ echo -e " ${BLUE} Seeding keys for BAP network...${NC} "
134+ docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
135+ vault kv put secret/keys/bap-network \
136+ signingPublicKey=' 1ct6/Xg6gHhT9QolufThbY4mWHYkIpXzh7YxMFM8MQE=' \
137+ signingPrivateKey=' C2hPMyeN+1Vzn8+7F/MUHmR5jKFuSb7s6tf/U5qni8vVy3r9eDqAeFP1CiW59OFtjiZYdiQilfOHtjEwUzwxAQ==' > /dev/null 2>&1
138+
139+ if [ $? -eq 0 ]; then
140+ echo -e " ${GREEN} ✓ BAP network keys seeded successfully${NC} "
141+ else
142+ echo -e " ${YELLOW} Warning: Failed to seed BAP network keys or keys already exist${NC} "
143+ fi
144+
145+ # Step 3: Check services status
146+ echo -e " ${YELLOW} Step 3: Checking services status...${NC} "
147+
148+ # Check if services are running
149+ if docker ps | grep -q " registry" ; then
150+ echo -e " ${GREEN} ✓ Registry is running${NC} "
151+ fi
152+ if docker ps | grep -q " gateway" ; then
153+ echo -e " ${GREEN} ✓ Gateway is running${NC} "
154+ fi
155+ if docker ps | grep -q " bap-client" ; then
156+ echo -e " ${GREEN} ✓ BAP services are running${NC} "
157+ fi
158+ if docker ps | grep -q " bpp-client" ; then
159+ echo -e " ${GREEN} ✓ BPP services are running${NC} "
160+ fi
161+ if docker ps | grep -q " vault" ; then
162+ echo -e " ${GREEN} ✓ Vault is running${NC} "
163+ fi
164+
165+ # Step 4: Create required directories
166+ echo -e " ${YELLOW} Step 4: Creating required directories...${NC} "
167+
168+ # Create schemas directory for validation
169+ if [ ! -d " schemas" ]; then
170+ mkdir -p schemas
171+ echo -e " ${GREEN} ✓ Created schemas directory${NC} "
172+ else
173+ echo -e " ${YELLOW} schemas directory already exists${NC} "
174+ fi
175+
176+ # Create logs directory
177+ if [ ! -d " logs" ]; then
178+ mkdir -p logs
179+ echo -e " ${GREEN} ✓ Created logs directory${NC} "
180+ else
181+ echo -e " ${YELLOW} logs directory already exists${NC} "
182+ fi
183+
184+ # Create plugins directory if not exists
185+ if [ ! -d " plugins" ]; then
186+ mkdir -p plugins
187+ echo -e " ${GREEN} ✓ Created plugins directory${NC} "
188+ else
189+ echo -e " ${YELLOW} plugins directory already exists${NC} "
190+ fi
191+
192+ # Step 5: Build adapter plugins
193+ echo -e " ${YELLOW} Step 5: Building adapter plugins...${NC} "
194+
195+ if [ -f " ./install/build-plugins.sh" ]; then
196+ chmod +x ./install/build-plugins.sh
197+ ./install/build-plugins.sh
198+ if [ $? -eq 0 ]; then
199+ echo -e " ${GREEN} ✓ Plugins built successfully${NC} "
200+ else
201+ echo -e " ${RED} Error: Plugin build failed${NC} "
202+ exit 1
203+ fi
204+ else
205+ echo -e " ${RED} Error: install/build-plugins.sh not found${NC} "
206+ exit 1
207+ fi
208+
209+ # Step 6: Build the adapter server
210+ echo -e " ${YELLOW} Step 6: Building Beckn-ONIX adapter server...${NC} "
211+
212+ if [ -f " go.mod" ]; then
213+ go build -o beckn-adapter cmd/adapter/main.go
214+ if [ $? -eq 0 ]; then
215+ echo -e " ${GREEN} ✓ Adapter server built successfully${NC} "
216+ else
217+ echo -e " ${RED} Error: Failed to build adapter server${NC} "
218+ echo -e " ${YELLOW} Please check Go installation and dependencies${NC} "
219+ exit 1
220+ fi
221+ else
222+ echo -e " ${RED} Error: go.mod not found${NC} "
223+ exit 1
224+ fi
225+
226+ # Step 7: Create environment file
227+ echo -e " ${YELLOW} Step 7: Creating environment configuration...${NC} "
228+
229+ # Check if we have Vault credentials
230+ if [ -z " $ROLE_ID " ] || [ -z " $SECRET_ID " ]; then
231+ echo -e " ${RED} Error: Vault credentials not available${NC} "
232+ echo -e " ${YELLOW} Please check Vault configuration and try again${NC} "
233+ exit 1
234+ fi
235+
236+ cat > .env << EOF
237+ # Beckn-ONIX Environment Configuration
238+ # Generated on $( date)
239+
240+ # Service URLs
241+ export REGISTRY_URL=http://localhost:3000
242+ export GATEWAY_URL=http://localhost:4000
243+ export BAP_CLIENT_URL=http://localhost:5001
244+ export BAP_NETWORK_URL=http://localhost:5002
245+ export BPP_CLIENT_URL=http://localhost:6001
246+ export BPP_NETWORK_URL=http://localhost:6002
247+ export REDIS_URL=localhost:6379
248+ export MONGO_URL=mongodb://localhost:27017
249+
250+ # Adapter Configuration
251+ export ADAPTER_PORT=8080
252+ export ADAPTER_MODE=development
253+
254+ # Vault Configuration
255+ export VAULT_ADDR=http://localhost:8200
256+ export VAULT_TOKEN=root
257+ export VAULT_ROLE_ID=$ROLE_ID
258+ export VAULT_SECRET_ID=$SECRET_ID
259+ EOF
260+
261+ if [ -f " .env" ]; then
262+ echo -e " ${GREEN} ✓ Environment file created successfully${NC} "
263+ echo -e " ${YELLOW} Vault ROLE_ID and SECRET_ID have been saved to .env${NC} "
264+ else
265+ echo -e " ${RED} Error: Failed to create .env file${NC} "
266+ exit 1
267+ fi
268+
269+ # Display final status
270+ echo " "
271+ echo -e " ${GREEN} ========================================${NC} "
272+ echo -e " ${GREEN} ✅ Setup Complete!${NC} "
273+ echo -e " ${GREEN} ========================================${NC} "
274+ echo " "
275+ echo -e " ${BLUE} Services Running:${NC} "
276+ echo -e " 📦 Registry: http://localhost:3000"
277+ echo -e " 🌐 Gateway: http://localhost:4000"
278+ echo -e " 🛒 BAP Client: http://localhost:5001"
279+ echo -e " 🛒 BAP Network: http://localhost:5002"
280+ echo -e " 🏪 BPP Client: http://localhost:6001"
281+ echo -e " 🏪 BPP Network: http://localhost:6002"
282+ echo -e " 💾 Redis: localhost:6379"
283+ echo -e " 🗄️ MongoDB: localhost:27017"
284+ echo " "
285+ echo -e " ${GREEN} Next Steps:${NC} "
286+ echo -e " 1. Run the adapter:"
287+ echo -e " ${YELLOW} source .env && ./beckn-adapter --config=config/local-dev.yaml${NC} "
288+ echo " "
289+ echo -e " 2. Test the endpoints:"
290+ echo -e " ${YELLOW} ./test_endpoints.sh${NC} "
291+ echo " "
292+ echo -e " 3. Stop all services:"
293+ echo -e " ${YELLOW} cd install && docker compose down${NC} "
294+ echo " "
295+ echo -e " 4. View logs:"
296+ echo -e " ${YELLOW} docker compose logs -f [service-name]${NC} "
297+ echo -e " ${GREEN} ========================================${NC} " #! /bin/bash
298+
299+ # Colors for output
300+ RED=' \033[0;31m'
301+ GREEN=' \033[0;32m'
302+ YELLOW=' \033[1;33m'
303+ BLUE=' \033[0;34m'
304+ NC=' \033[0m' # No Color
305+
306+ echo -e " ${BLUE} ========================================${NC} "
307+ echo -e " ${BLUE} Beckn-ONIX Complete Setup${NC} "
308+ echo -e " ${BLUE} ========================================${NC} "
309+
310+ # Check if Docker is running
311+ if ! docker info > /dev/null 2>&1 ; then
312+ echo -e " ${RED} Error: Docker is not running. Please start Docker first.${NC} "
313+ exit 1
314+ fi
315+
316+ # Step 1: Run the Beckn network installer
317+ echo -e " ${YELLOW} Step 1: Setting up Beckn network services...${NC} "
318+
319+ # Check if install directory exists
320+ # if [ ! -d "./install" ]; then
321+ # echo -e "${RED}Error: install directory not found.${NC}"
322+ # exit 1
323+ # fi
324+
29325# Make the installer executable
30326chmod +x ./install/beckn-onix.sh
31327
32328# Navigate to install directory and run setup
33329cd install
34330
35331# Auto-select option 3 (local setup) for the installer
36- echo -e " ${GREEN} Running local network setup...${NC} "
37- echo " 3" | ./beckn-onix.sh
332+ # echo -e "${GREEN}Running local network setup...${NC}"
333+ # echo "3" | ./beckn-onix.sh
38334
39335cd ..
40336
@@ -129,6 +425,19 @@ docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
129425
130426echo -e " ${GREEN} ✓ Vault configured successfully${NC} "
131427
428+ # Seed the keys for BAP network
429+ echo -e " ${BLUE} Seeding keys for BAP network...${NC} "
430+ docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
431+ vault kv put secret/keys/bap-network \
432+ signingPublicKey=' 1ct6/Xg6gHhT9QolufThbY4mWHYkIpXzh7YxMFM8MQE=' \
433+ signingPrivateKey=' C2hPMyeN+1Vzn8+7F/MUHmR5jKFuSb7s6tf/U5qni8vVy3r9eDqAeFP1CiW59OFtjiZYdiQilfOHtjEwUzwxAQ==' > /dev/null 2>&1
434+
435+ if [ $? -eq 0 ]; then
436+ echo -e " ${GREEN} ✓ BAP network keys seeded successfully${NC} "
437+ else
438+ echo -e " ${YELLOW} Warning: Failed to seed BAP network keys or keys already exist${NC} "
439+ fi
440+
132441# Step 3: Check services status
133442echo -e " ${YELLOW} Step 3: Checking services status...${NC} "
134443
179488# Step 5: Build adapter plugins
180489echo -e " ${YELLOW} Step 5: Building adapter plugins...${NC} "
181490
182- if [ -f " ./build-plugins.sh" ]; then
183- chmod +x ./build-plugins.sh
184- ./build-plugins.sh
491+ if [ -f " ./install/ build-plugins.sh" ]; then
492+ chmod +x ./install/ build-plugins.sh
493+ ./install/ build-plugins.sh
185494 if [ $? -eq 0 ]; then
186495 echo -e " ${GREEN} ✓ Plugins built successfully${NC} "
187496 else
188497 echo -e " ${RED} Error: Plugin build failed${NC} "
189498 exit 1
190499 fi
191500else
192- echo -e " ${RED} Error: build-plugins.sh not found${NC} "
501+ echo -e " ${RED} Error: install/ build-plugins.sh not found${NC} "
193502 exit 1
194503fi
195504
@@ -280,5 +589,5 @@ echo -e "3. Stop all services:"
280589echo -e " ${YELLOW} cd install && docker compose down${NC} "
281590echo " "
282591echo -e " 4. View logs:"
283- echo -e " ${YELLOW} cd install && docker compose logs -f [service-name]${NC} "
592+ echo -e " ${YELLOW} docker compose logs -f [service-name]${NC} "
284593echo -e " ${GREEN} ========================================${NC} "
0 commit comments