88 lines
2.7 KiB
Bash
Executable File
88 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Quick checklist for Google OAuth readiness on current Laravel app.
|
|
# Usage:
|
|
# scripts/ops/netgescon-google-check.sh [--app-dir /var/www/netgescon]
|
|
# scripts/ops/netgescon-google-check.sh --base-url https://staging.netgescon.it --resolve-local
|
|
|
|
APP_DIR="${PWD}"
|
|
BASE_URL=""
|
|
RESOLVE_LOCAL=0
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--app-dir)
|
|
APP_DIR="$2"
|
|
shift 2
|
|
;;
|
|
--base-url)
|
|
BASE_URL="$2"
|
|
shift 2
|
|
;;
|
|
--resolve-local)
|
|
RESOLVE_LOCAL=1
|
|
shift
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
echo "Usage: $0 [--app-dir <path>] [--base-url <url>] [--resolve-local]"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ ! -f "$APP_DIR/.env" ]]; then
|
|
echo "Error: .env not found in $APP_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
echo "== Google OAuth Check =="
|
|
echo "App dir: $APP_DIR"
|
|
|
|
php -r '
|
|
$envPath = $argv[1] . "/.env";
|
|
$keys = ["APP_URL", "GOOGLE_CLIENT_ID", "GOOGLE_CLIENT_SECRET", "GOOGLE_REDIRECT_URI"];
|
|
$map = [];
|
|
foreach (file($envPath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
|
|
if ($line === "" || $line[0] === "#" || strpos($line, "=") === false) continue;
|
|
[$k, $v] = explode("=", $line, 2);
|
|
$map[$k] = trim($v);
|
|
}
|
|
foreach ($keys as $k) {
|
|
$v = $map[$k] ?? "";
|
|
$ok = ($v !== "" && strtolower($v) !== "null");
|
|
echo $k . ": " . ($ok ? "SET" : "MISSING") . PHP_EOL;
|
|
}
|
|
' "$APP_DIR"
|
|
|
|
if [[ -z "$BASE_URL" ]]; then
|
|
BASE_URL="$(php -r '$u=""; foreach(file("'"$APP_DIR"'/.env", FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) as $l){ if(strpos($l,"APP_URL=")===0){ $u=trim(substr($l,8)); break; }} echo rtrim($u,"/");')"
|
|
fi
|
|
|
|
if [[ -z "$BASE_URL" ]]; then
|
|
echo "Error: APP_URL is empty and --base-url was not provided"
|
|
exit 1
|
|
fi
|
|
|
|
HOST="$(php -r 'echo parse_url($argv[1], PHP_URL_HOST) ?: "";' "$BASE_URL")"
|
|
SCHEME="$(php -r 'echo parse_url($argv[1], PHP_URL_SCHEME) ?: "http";' "$BASE_URL")"
|
|
PORT="$(php -r '$u=$argv[1]; $p=parse_url($u, PHP_URL_PORT); if($p){echo $p; exit;} $s=parse_url($u, PHP_URL_SCHEME) ?: "http"; echo ($s === "https") ? "443" : "80";' "$BASE_URL")"
|
|
|
|
if [[ -n "$HOST" && "$HOST" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
echo
|
|
echo "Warning: BASE_URL host is an IP ($HOST)."
|
|
echo "If nginx uses server_name domains, direct IP checks can return 404 even when app is UP."
|
|
fi
|
|
|
|
echo
|
|
echo "Expected callback route: <APP_URL>/oauth/google/callback"
|
|
echo "Route test (auth required, should redirect to login if guest):"
|
|
TARGET_URL="${BASE_URL}/oauth/google/redirect"
|
|
|
|
if [[ "$RESOLVE_LOCAL" -eq 1 && -n "$HOST" ]]; then
|
|
echo "Route test mode: --resolve ${HOST}:${PORT}:127.0.0.1"
|
|
curl -kI --resolve "${HOST}:${PORT}:127.0.0.1" "$TARGET_URL" | head -n 12 || true
|
|
else
|
|
curl -kI "$TARGET_URL" | head -n 12 || true
|
|
fi
|