Skip to content

Commit 63cb926

Browse files
authored
Merge pull request #16 from touchmegit1/dev
fix: improve environment variable loading in database scripts for enhanced security
2 parents c571bee + 6571e11 commit 63cb926

File tree

4 files changed

+29
-24
lines changed

4 files changed

+29
-24
lines changed

.github/workflows/cd.yml

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -179,21 +179,20 @@ jobs:
179179
exit 1
180180
fi
181181
182-
# Load backend env even when file is owned by root (e.g. mode 600).
183-
set -a
184-
TMP_ENV="$(mktemp)"
185-
if [ -r "$ENV_FILE" ]; then
186-
cat "$ENV_FILE" > "$TMP_ENV"
187-
else
182+
if [ ! -r "$ENV_FILE" ]; then
188183
echo "No read permission for $ENV_FILE, loading via sudo..."
189-
sudo cat "$ENV_FILE" > "$TMP_ENV"
190184
fi
191185
192-
# Normalize potential CRLF and source variables
193-
sed -i 's/\r$//' "$TMP_ENV"
194-
. "$TMP_ENV"
195-
rm -f "$TMP_ENV"
196-
set +a
186+
# Read only required keys from backend.env (safe, no shell execution).
187+
get_env_value() {
188+
key="$1"
189+
sudo sed -n "s/^${key}=//p" "$ENV_FILE" | tail -n 1 | tr -d '\r'
190+
}
191+
192+
DB_USERNAME="$(get_env_value DB_USERNAME)"
193+
DB_PASSWORD="$(get_env_value DB_PASSWORD)"
194+
MYSQL_DATABASE="$(get_env_value MYSQL_DATABASE)"
195+
MYSQL_ROOT_PASSWORD="$(get_env_value MYSQL_ROOT_PASSWORD)"
197196
198197
: "${DB_USERNAME:=smalltrend}"
199198
: "${DB_PASSWORD:=1234}"

deploy/scripts/init-db-and-seed.sh

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,14 @@ require_file "$SEED_FILE"
2626

2727
cd "$DEPLOY_PATH"
2828

29-
log "2/7" "Loading environment"
30-
set -a
31-
# shellcheck disable=SC1090
32-
. "$ENV_FILE"
33-
set +a
29+
log "2/7" "Reading required DB variables from backend.env"
30+
get_env_value() {
31+
local key="$1"
32+
sed -n "s/^${key}=//p" "$ENV_FILE" | tail -n 1 | tr -d '\r'
33+
}
34+
35+
MYSQL_DATABASE="$(get_env_value MYSQL_DATABASE)"
36+
MYSQL_ROOT_PASSWORD="$(get_env_value MYSQL_ROOT_PASSWORD)"
3437

3538
: "${MYSQL_DATABASE:=smalltrend}"
3639
: "${MYSQL_ROOT_PASSWORD:=root1234}"

deploy/scripts/reset-db-and-seed.sh

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,14 @@ require_file "$SEED_FILE"
2626

2727
cd "$DEPLOY_PATH"
2828

29-
log "2/7" "Loading backend environment"
30-
set -a
31-
# shellcheck disable=SC1090
32-
. "$ENV_FILE"
33-
set +a
29+
log "2/7" "Reading required DB variables from backend.env"
30+
get_env_value() {
31+
local key="$1"
32+
sed -n "s/^${key}=//p" "$ENV_FILE" | tail -n 1 | tr -d '\r'
33+
}
34+
35+
MYSQL_DATABASE="$(get_env_value MYSQL_DATABASE)"
36+
MYSQL_ROOT_PASSWORD="$(get_env_value MYSQL_ROOT_PASSWORD)"
3437

3538
: "${MYSQL_DATABASE:=smalltrend}"
3639
: "${MYSQL_ROOT_PASSWORD:=root1234}"

frontend/.env.example

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# API CONFIGURATION
88
# ===================================
99
# URL backend API (không có trailing slash)
10-
VITE_API_BASE_URL=http://localhost:8081/api
10+
VITE_API_BASE_URL=/api
1111

1212
# Timeout cho API calls (milliseconds)
1313
VITE_API_TIMEOUT=30000
@@ -66,4 +66,4 @@ VITE_LOYALTY_POINTS_PER_1000=1
6666
VITE_MAX_FILE_SIZE=10
6767

6868
# Các định dạng ảnh cho phép
69-
VITE_ALLOWED_IMAGE_TYPES=image/jpeg,image/png,image/webp
69+
VITE_ALLOWED_IMAGE_TYPES=image/jpeg,image/png,image/webp

0 commit comments

Comments
 (0)