44
55set -e
66
7+ SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
8+ source " $SCRIPT_DIR /lib/common.sh"
9+ set -e
10+
11+ if [[ -d " /workspace/.devcontainer" ]]; then
12+ WORKSPACE_ROOT=" /workspace"
13+ else
14+ WORKSPACE_ROOT=" $( cd " $SCRIPT_DIR /.." && pwd) "
15+ fi
16+
717# カラー定義
818RED=' \033[0;31m'
919GREEN=' \033[0;32m'
@@ -13,19 +23,8 @@ CYAN='\033[0;36m'
1323NC=' \033[0m'
1424
1525# 設定ファイルパス検出
16- if [[ -f " /workspace/.env.template" ]]; then
17- # DevContainer内での実行
18- ENV_FILE=" /workspace/.env"
19- ENV_TEMPLATE=" /workspace/.env.template"
20- elif [[ -f " $( pwd) /.env.template" ]]; then
21- # ローカルでの実行
22- ENV_FILE=" $( pwd) /.env"
23- ENV_TEMPLATE=" $( pwd) /.env.template"
24- else
25- # 現在ディレクトリから検索
26- ENV_FILE=" .env"
27- ENV_TEMPLATE=" .env.template"
28- fi
26+ ENV_FILE=$( resolve_env_file)
27+ ENV_TEMPLATE=$( resolve_env_template_file)
2928
3029echo -e " ${BLUE} 🔐 環境変数セキュリティチェック開始${NC} "
3130
4443# 必須環境変数チェック
4544echo -e " ${CYAN} 🔍 必須環境変数をチェック中...${NC} "
4645
47- source " $ENV_FILE "
46+ load_env_file " $ENV_FILE "
4847
4948# Tailscale Auth Key 検証
50- if [[ -z " $TAILSCALE_AUTH_KEY " || " $TAILSCALE_AUTH_KEY " == " your-tailscale-auth-key-here " ]] ; then
51- echo -e " ${RED} ❌ TAILSCALE_AUTH_KEY が設定されていません ${NC} "
49+ if ! is_valid_tailscale_key " $TAILSCALE_AUTH_KEY " ; then
50+ echo -e " ${YELLOW} ⚠️ TAILSCALE_AUTH_KEY が未設定です(ローカルモードで利用可能) ${NC} "
5251 echo " "
5352 echo -e " ${YELLOW} 📝 Tailscale Auth Key 設定手順:${NC} "
5453 echo " 1. https://login.tailscale.com/admin/settings/keys にアクセス"
5554 echo " 2. 'Generate auth key' をクリック"
5655 echo " 3. 'Reusable' と 'Ephemeral' をチェック"
5756 echo " 4. 生成されたキーを .env ファイルに設定"
5857 echo " "
59- echo -e " ${CYAN} 今すぐ設定しますか? (y/N): ${NC} "
60- read -r SET_AUTH_KEY
61-
62- if [[ " $SET_AUTH_KEY " =~ ^[Yy]$ ]]; then
63- echo -e " ${CYAN} Tailscale Auth Key を入力してください:${NC} "
64- read -s -p " 🔑 Auth Key: " NEW_AUTH_KEY
65- echo " "
66-
67- if [[ -n " $NEW_AUTH_KEY " && " $NEW_AUTH_KEY " =~ ^tskey-auth- ]]; then
68- # .env ファイル更新
69- sed -i " s/TAILSCALE_AUTH_KEY=.*/TAILSCALE_AUTH_KEY=\" $NEW_AUTH_KEY \" /" " $ENV_FILE "
70- echo -e " ${GREEN} ✅ Tailscale Auth Key を設定しました${NC} "
71- TAILSCALE_AUTH_KEY=" $NEW_AUTH_KEY "
58+ if is_ci_mode; then
59+ echo -e " ${YELLOW} ℹ️ CIモードのため対話入力をスキップします${NC} "
60+ else
61+ echo -e " ${CYAN} 今すぐ設定しますか? (y/N): ${NC} "
62+ read -r SET_AUTH_KEY
63+
64+ if [[ " $SET_AUTH_KEY " =~ ^[Yy]$ ]]; then
65+ echo -e " ${CYAN} Tailscale Auth Key を入力してください:${NC} "
66+ read -s -p " 🔑 Auth Key: " NEW_AUTH_KEY
67+ echo " "
68+
69+ if is_valid_tailscale_key " $NEW_AUTH_KEY " ; then
70+ # .env ファイル更新
71+ upsert_env_value " $ENV_FILE " " TAILSCALE_AUTH_KEY" " $NEW_AUTH_KEY "
72+ echo -e " ${GREEN} ✅ Tailscale Auth Key を設定しました${NC} "
73+ TAILSCALE_AUTH_KEY=" $NEW_AUTH_KEY "
74+ else
75+ echo -e " ${YELLOW} ⚠️ 無効なAuth Keyです。後で手動で設定してください${NC} "
76+ fi
7277 else
73- echo -e " ${RED} ❌ 無効なAuth Keyです。 後で手動で設定してください${NC} "
78+ echo -e " ${YELLOW} ⚠️ 後で手動で設定してください${NC} "
7479 fi
75- else
76- echo -e " ${YELLOW} ⚠️ 後で手動で設定してください${NC} "
7780 fi
7881fi
7982
8083# Auth Key 形式チェック
81- if [[ -n " $TAILSCALE_AUTH_KEY " && " $TAILSCALE_AUTH_KEY " != " your-tailscale-auth-key-here " ]]; then
82- if [[ " $TAILSCALE_AUTH_KEY " =~ ^tskey-auth- ]] ; then
84+ if [[ -n " $TAILSCALE_AUTH_KEY " ]]; then
85+ if is_valid_tailscale_key " $TAILSCALE_AUTH_KEY " ; then
8386 echo -e " ${GREEN} ✅ Tailscale Auth Key: 正常${NC} "
84- else
87+ elif ! is_placeholder_tailscale_key " $TAILSCALE_AUTH_KEY " ; then
8588 echo -e " ${YELLOW} ⚠️ Auth Key の形式が正しくない可能性があります${NC} "
8689 fi
8790fi
8891
89- # プロジェクト名チェック
90- if [[ -z " $PROJECT_NAME " ]]; then
91- echo -e " ${YELLOW} ⚠️ PROJECT_NAME が設定されていません(オプション)${NC} "
92- fi
93-
9492# ECC プロファイル検証
9593VALID_PROFILES=(" minimal" " developer" " full" )
9694if [[ -n " $ECC_PROFILE " ]]; then
105103fi
106104
107105# ポート競合チェック
108- PORTS=(" $OPENCODE_PORT " " $OPENCHAMBER_PORT " " $DEV_SERVER_PORT " )
109- DEFAULT_PORTS=(" 4095" " 3000" " 8080 " )
106+ PORTS=(" $OPENCODE_PORT " " $OPENCHAMBER_PORT " )
107+ DEFAULT_PORTS=(" 4095" " 3000" )
110108
111109for i in " ${! PORTS[@]} " ; do
112110 PORT=${PORTS[$i]:- ${DEFAULT_PORTS[$i]} }
@@ -123,23 +121,23 @@ done
123121echo -e " ${CYAN} 🔒 ファイル権限をチェック中...${NC} "
124122
125123# .env ファイルの権限を制限(機密情報保護)
126- chmod 600 " $ENV_FILE "
124+ ensure_env_permissions " $ENV_FILE "
127125echo -e " ${GREEN} ✅ .env ファイル権限: 600 (所有者のみ読み書き)${NC} "
128126
129127# スクリプトファイルの実行権限
130- SCRIPTS_DIR=" /workspace /scripts"
128+ SCRIPTS_DIR=" $WORKSPACE_ROOT /scripts"
131129if [[ -d " $SCRIPTS_DIR " ]]; then
132130 find " $SCRIPTS_DIR " -name " *.sh" -exec chmod +x {} \;
133131 echo -e " ${GREEN} ✅ スクリプト実行権限を設定しました${NC} "
134132fi
135133
136134# Git セキュリティチェック
137- if [[ -f " /workspace /.gitignore" ]]; then
138- if grep -q " \.env" " /workspace /.gitignore" ; then
135+ if [[ -f " $WORKSPACE_ROOT /.gitignore" ]]; then
136+ if grep -q " \.env" " $WORKSPACE_ROOT /.gitignore" ; then
139137 echo -e " ${GREEN} ✅ .env ファイルがGit管理対象外に設定済み${NC} "
140138 else
141139 echo -e " ${YELLOW} ⚠️ .env ファイルをGit管理対象外に追加します${NC} "
142- echo " .env" >> " /workspace /.gitignore"
140+ echo " .env" >> " $WORKSPACE_ROOT /.gitignore"
143141 echo -e " ${GREEN} ✅ .gitignore に .env を追加しました${NC} "
144142 fi
145143fi
@@ -150,18 +148,14 @@ echo -e "${BLUE}🔐 セキュリティチェック完了${NC}"
150148echo " ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
151149
152150# Auth Key 状態
153- if [[ -n " $TAILSCALE_AUTH_KEY " && " $TAILSCALE_AUTH_KEY " != " your-tailscale-auth-key-here " ]] ; then
151+ if is_valid_tailscale_key " $TAILSCALE_AUTH_KEY " ; then
154152 echo -e " ${GREEN} 🔑 Tailscale Auth Key: 設定済み${NC} "
155153else
156154 echo -e " ${RED} 🔑 Tailscale Auth Key: 未設定${NC} "
157155fi
158156
159- # プロジェクト情報
160- if [[ -n " $PROJECT_NAME " ]]; then
161- echo -e " ${GREEN} 📁 プロジェクト: $PROJECT_NAME ${NC} "
162- else
163- echo -e " ${YELLOW} 📁 プロジェクト: 未設定${NC} "
164- fi
157+ # 運用モード
158+ echo -e " ${GREEN} 🏗️ 基盤モード: 有効${NC} "
165159
166160# ファイル保護
167161echo -e " ${GREEN} 🔒 ファイル保護: 有効${NC} "
@@ -170,10 +164,8 @@ echo -e "${GREEN}🚫 Git除外設定: 有効${NC}"
170164echo " ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
171165
172166# 最終確認
173- if [[ -z " $TAILSCALE_AUTH_KEY " || " $TAILSCALE_AUTH_KEY " == " your-tailscale-auth-key-here" ]]; then
174- echo -e " ${RED} ⚠️ 重要: Tailscale Auth Keyが未設定です${NC} "
175- echo -e " ${CYAN} リモートアクセスを使用するには設定が必要です${NC} "
176- exit 1
177- else
167+ if is_valid_tailscale_key " $TAILSCALE_AUTH_KEY " ; then
178168 echo -e " ${GREEN} ✅ セキュリティ設定完了 - 安全に使用できます${NC} "
179- fi
169+ else
170+ echo -e " ${YELLOW} ✅ セキュリティ設定完了 - Tailscale未設定のためローカルモードです${NC} "
171+ fi
0 commit comments