#!/bin/bash
# ============================================================
# setup.sh
# 設置先: /var/www/html/manager/sinkan/setup.sh
# Linuxサーバー上での初期セットアップ
# 実行ユーザー: root または sudo 権限のあるユーザー
# ============================================================

# このスクリプト自身の設置ディレクトリを基準にする
SINKAN_DIR="$(cd "$(dirname "$0")" && pwd)"

echo "セットアップ開始: ${SINKAN_DIR}"

# ============================================================
# 1. 必要なサブディレクトリ作成
# ============================================================
mkdir -p "${SINKAN_DIR}/db/bck"
mkdir -p "${SINKAN_DIR}/csv"
mkdir -p "${SINKAN_DIR}/log"
echo "[OK] ディレクトリ作成完了"

# ============================================================
# 2. パーミッション設定
# ============================================================
# 実行ファイルはubuntu所有のまま（変更不要）
chmod +x "${SINKAN_DIR}/getsinkan.sh"

# サブフォルダ: 所有者=ubuntu（WinSCPで操作可）、グループ=www-data（PHPで書き込み可）
# ubuntu がファイルを削除でき、かつ PHP(www-data) も書き込める
chown -R ubuntu:www-data "${SINKAN_DIR}/db/"
chown -R ubuntu:www-data "${SINKAN_DIR}/csv/"
chown -R ubuntu:www-data "${SINKAN_DIR}/log/"
chmod -R 775 "${SINKAN_DIR}/db/"
chmod -R 775 "${SINKAN_DIR}/csv/"
chmod -R 775 "${SINKAN_DIR}/log/"

# 新規ファイルもグループ書き込み権限を継承させる（setgid）
chmod g+s "${SINKAN_DIR}/db/"
chmod g+s "${SINKAN_DIR}/csv/"
chmod g+s "${SINKAN_DIR}/log/"

echo "[OK] パーミッション設定完了"

# ============================================================
# 3. 必要なPHPモジュール確認
# ============================================================
echo ""
echo "=== PHP モジュール確認 ==="
MISSING=""
for mod in curl sqlite3 mbstring; do
    if php -m | grep -qE "^${mod}$"; then
        echo "[OK] php-${mod}"
    else
        echo "[NG] php-${mod} ← 不足しています"
        MISSING="${MISSING} php-${mod}"
    fi
done

if [ -n "$MISSING" ]; then
    echo ""
    echo "不足モジュールのインストール:"
    echo "  sudo apt install${MISSING}"
fi

# ============================================================
# 4. タイムゾーン確認
# ============================================================
echo ""
echo "=== タイムゾーン確認 ==="
TZ=$(timedatectl | grep "Time zone" | awk '{print $3}')
echo "現在のタイムゾーン: ${TZ}"
if [ "$TZ" != "Asia/Tokyo" ]; then
    echo "[注意] JSTではありません。以下のコマンドで設定してください:"
    echo "  sudo timedatectl set-timezone Asia/Tokyo"
else
    echo "[OK] Asia/Tokyo (JST)"
fi

# ============================================================
# 5. cron 設定案の表示
# ============================================================
echo ""
echo "=== cron 設定 ==="
echo "以下のコマンドで crontab を編集してください:"
echo "  sudo crontab -e -u www-data"
echo ""
echo "追加する1行:"
echo "  0 2 * * * ${SINKAN_DIR}/getsinkan.sh >> ${SINKAN_DIR}/log/getsinkan.log 2>&1"

# ============================================================
# 6. 動作テスト案の表示
# ============================================================
echo ""
echo "=== 動作テスト ==="
echo "手動実行:"
echo "  sudo -u www-data ${SINKAN_DIR}/getsinkan.sh"
echo "ログ確認:"
echo "  tail -f ${SINKAN_DIR}/log/getsinkan.log"

echo ""
echo "セットアップ完了"
