1+ #! /bin/bash
2+
3+ # This script runs on the host machine BEFORE the container is created.
4+
5+ TEMPLATE_FILE=" .env.template"
6+ OUTPUT_FILE=" .env"
7+ KONG_FILE=" kong.yaml"
8+ CYPRESS_CONFIG=" sample-web-ui/cypress.config.ts"
9+ README_FILE=" Readme.md"
10+ REPO_TYPE=" "
11+
12+ # Function to validate repository
13+ validate_repository () {
14+ if [ -f " $README_FILE " ] && grep -q " Device Management Toolkit (formerly known as Open AMT Cloud Toolkit)" " $README_FILE " ; then
15+ REPO_TYPE=" DMT"
16+ echo " ✓ Detected: Device Management Toolkit repository"
17+ return 0
18+ fi
19+
20+ echo " ✗ Error: Unrecognized repository. This script must be run from the Device Management Toolkit repository."
21+ exit 1
22+ }
23+
24+ # Function to handle DMT-specific operations
25+ dmt_operations () {
26+ echo " =========================================="
27+ echo " Environment Configuration Setup"
28+ echo " =========================================="
29+
30+ dmt_generate_defaults
31+ dmt_populate_env_file
32+ dmt_update_kong_config
33+ dmt_update_cypress_config
34+
35+ echo " =========================================="
36+ echo " Configuration complete!"
37+ echo " =========================================="
38+ }
39+
40+ # Function to generate default values for DMT
41+ dmt_generate_defaults () {
42+ DEFAULT_MPS_COMMON_NAME=$( hostname -I | awk ' {print $1}' ) # Automatically detected system IP address
43+ DEFAULT_MPS_WEB_ADMIN_USER=" hspeoob" # Default admin username for MPS web interface
44+ DEFAULT_MPS_WEB_ADMIN_PASSWORD=" Apple-1234" # Default admin password for MPS web interface
45+ DEFAULT_MPS_JWT_SECRET=$( cat /dev/urandom | tr -dc ' a-zA-Z0-9' | fold -w 32 | head -n 1) # Randomly generated 32-char JWT secret
46+ DEFAULT_MPS_JWT_ISSUER=$( cat /dev/urandom | tr -dc ' a-zA-Z0-9' | fold -w 32 | head -n 1) # Randomly generated 32-char JWT issuer key
47+ DEFAULT_POSTGRES_PASSWORD=" Apple-1234" # Default PostgreSQL database password
48+ DEFAULT_VAULT_TOKEN=$( cat /dev/urandom | tr -dc ' a-zA-Z0-9' | fold -w 32 | head -n 1) # Randomly generated 32-char Vault token
49+ }
50+
51+ # Function to populate .env file for DMT
52+ dmt_populate_env_file () {
53+ if [ -f " $OUTPUT_FILE " ] && grep -qE " ^MPS_JWT_SECRET=.+$" " $OUTPUT_FILE " ; then
54+ echo " ✓ Existing .env with MPS_JWT_SECRET found; skipping .env generation."
55+ return 0
56+ fi
57+
58+ echo " Creating and populating .env file..."
59+ cp " $TEMPLATE_FILE " " $OUTPUT_FILE "
60+
61+ sed -i " s|^MPS_COMMON_NAME=.*|MPS_COMMON_NAME=$DEFAULT_MPS_COMMON_NAME |" " $OUTPUT_FILE "
62+ sed -i " s|^MPS_WEB_ADMIN_USER=.*|MPS_WEB_ADMIN_USER=$DEFAULT_MPS_WEB_ADMIN_USER |" " $OUTPUT_FILE "
63+ sed -i " s|^MPS_WEB_ADMIN_PASSWORD=.*|MPS_WEB_ADMIN_PASSWORD=$DEFAULT_MPS_WEB_ADMIN_PASSWORD |" " $OUTPUT_FILE "
64+ sed -i " s|^MPS_JWT_SECRET=.*|MPS_JWT_SECRET=$DEFAULT_MPS_JWT_SECRET |" " $OUTPUT_FILE "
65+ sed -i " s|^MPS_JWT_ISSUER=.*|MPS_JWT_ISSUER=$DEFAULT_MPS_JWT_ISSUER |" " $OUTPUT_FILE "
66+ sed -i " s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$DEFAULT_POSTGRES_PASSWORD |" " $OUTPUT_FILE "
67+ sed -i " s|^VAULT_TOKEN=.*|VAULT_TOKEN=$DEFAULT_VAULT_TOKEN |" " $OUTPUT_FILE "
68+
69+ echo " ✓ .env file has been created and populated with default values."
70+ }
71+
72+ # Function to update kong.yaml for DMT
73+ dmt_update_kong_config () {
74+ if [ -f " $KONG_FILE " ]; then
75+ echo " Updating kong.yaml with JWT secrets..."
76+ if grep -qE " ^\s*secret:\s*[^[:space:]]+" " $KONG_FILE " ; then
77+ echo " ✓ Existing Kong JWT secret found; leaving unchanged."
78+ else
79+ sed -i " s|key: [a-zA-Z0-9]* #sample key|key: $DEFAULT_MPS_JWT_ISSUER #sample key|" " $KONG_FILE "
80+ sed -i -E " s|^(\s*secret:)\s*.*$|\1 \" $DEFAULT_MPS_JWT_SECRET \" |" " $KONG_FILE "
81+ echo " ✓ kong.yaml has been updated with JWT secrets."
82+ fi
83+ else
84+ echo " ⚠ Warning: kong.yaml not found, skipping Kong configuration."
85+ fi
86+ }
87+
88+ # Function to update cypress.config.ts for DMT
89+ dmt_update_cypress_config () {
90+ if [ -f " $CYPRESS_CONFIG " ]; then
91+ echo " Updating cypress.config.ts with credentials..."
92+ sed -i " s|MPS_USERNAME: '.*'|MPS_USERNAME: '$DEFAULT_MPS_WEB_ADMIN_USER '|" " $CYPRESS_CONFIG "
93+ sed -i " s|MPS_PASSWORD: '.*'|MPS_PASSWORD: '$DEFAULT_MPS_WEB_ADMIN_PASSWORD '|" " $CYPRESS_CONFIG "
94+ sed -i " s|VAULT_TOKEN: '.*'|VAULT_TOKEN: '$DEFAULT_VAULT_TOKEN '|" " $CYPRESS_CONFIG "
95+ echo " ✓ cypress.config.ts has been updated with credentials."
96+ else
97+ echo " ⚠ Warning: cypress.config.ts not found, skipping Cypress configuration."
98+ fi
99+ }
100+
101+ # Main execution
102+ main () {
103+ validate_repository
104+
105+ if [ " $REPO_TYPE " = " DMT" ]; then
106+ dmt_operations
107+ fi
108+ }
109+
110+ # Run main function
111+ main REPO_TYPE=" DMT"
0 commit comments