|
1 | | -#!/bin/bash |
2 | | -# California FBI™ — Module Install Script |
3 | | -# Ensures UFW firewall is installed/enabled and module ports are open. |
4 | | -# Usage: sudo bash install/install.sh |
5 | | -set -e |
| 1 | +#!/usr/bin/env bash |
| 2 | +# California FBI module installer — follows the NWE Unified Installation Contract. |
| 3 | +set -euo pipefail |
6 | 4 |
|
7 | | -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" |
8 | | -MOD_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" |
9 | | -NWE_ROOT="$(cd "$MOD_ROOT/../.." 2>/dev/null && pwd)" |
10 | | -[ -f "$NWE_ROOT/scripts/nwe-ports.sh" ] && source "$NWE_ROOT/scripts/nwe-ports.sh" |
| 5 | +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| 6 | +NWE_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" |
| 7 | +CONTRACT="$NWE_ROOT/scripts/install-contract.sh" |
| 8 | +[[ -f "$CONTRACT" ]] || { echo "[FAIL] Missing installation contract: $CONTRACT" >&2; exit 1; } |
| 9 | +# shellcheck source=/dev/null |
| 10 | +source "$CONTRACT" |
| 11 | +MOD_ROOT="$(nwe_module_root "$SCRIPT_DIR")" |
| 12 | +nwe_verify_module "$MOD_ROOT" |
| 13 | +nwe_install_contract_banner |
11 | 14 |
|
12 | | -echo "═══════════════════════════════════════════════════════════════" |
13 | | -echo " California FBI™ — Module Install" |
14 | | -echo "═══════════════════════════════════════════════════════════════" |
15 | | -echo "" |
| 15 | +nwe_step "Validating FBI module" |
| 16 | +nwe_require_command bash |
| 17 | +nwe_verify_path "$MOD_ROOT" |
16 | 18 |
|
17 | | -# 1. Database setup |
18 | | -echo "[1/2] Database setup..." |
19 | | -if [ -f "$MOD_ROOT/servlets/setup-db.sh" ]; then |
20 | | - bash "$MOD_ROOT/servlets/setup-db.sh" && echo " [✓] Database nwe_california_fbi ready" || echo " [!] Database setup had issues" |
| 19 | +nwe_step "Database setup" |
| 20 | +if [[ -x "$MOD_ROOT/servlets/setup-db.sh" || -f "$MOD_ROOT/servlets/setup-db.sh" ]]; then |
| 21 | + bash "$MOD_ROOT/servlets/setup-db.sh" |
21 | 22 | else |
22 | | - echo " [--] No setup-db.sh found (database may already exist)" |
| 23 | + nwe_warn "No setup-db.sh found; database setup skipped." |
23 | 24 | fi |
24 | 25 |
|
25 | | -# 2. Firewall (UFW install + enable + open ports) |
26 | | -echo "" |
27 | | -echo "[2/2] Configuring firewall..." |
28 | | -if type nwe_ensure_ufw &>/dev/null; then |
| 26 | +nwe_step "Firewall policy" |
| 27 | +if [[ "${NWE_CONFIGURE_FIREWALL:-0}" == "1" ]]; then |
| 28 | + nwe_source_optional "$NWE_ROOT/scripts/nwe-ports.sh" || nwe_fail "Missing NWE port manager" |
29 | 29 | nwe_ensure_ufw |
30 | | - sudo ufw allow 8080/tcp >/dev/null 2>&1 && echo " [✓] Port 8080 (Tomcat) opened" || true |
31 | | - sudo ufw allow 49210/tcp >/dev/null 2>&1 && echo " [✓] Port 49210 (backend) opened" || true |
32 | | -else |
33 | | - echo " [--] NWE port library not available — installing UFW manually..." |
34 | | - if command -v apt-get &>/dev/null; then |
35 | | - sudo apt-get install -y -qq ufw >/dev/null 2>&1 |
36 | | - elif command -v dnf &>/dev/null; then |
37 | | - sudo dnf install -y -q ufw >/dev/null 2>&1 |
38 | | - fi |
39 | | - if command -v ufw &>/dev/null; then |
40 | | - sudo ufw allow 22/tcp >/dev/null 2>&1 |
41 | | - sudo ufw allow 8080/tcp >/dev/null 2>&1 |
42 | | - sudo ufw allow 49210/tcp >/dev/null 2>&1 |
43 | | - sudo ufw --force enable >/dev/null 2>&1 |
44 | | - echo " [✓] UFW installed and ports opened" |
| 30 | + if [[ -n "${NWE_TRUSTED_IP:-}" ]]; then |
| 31 | + nwe_run_privileged ufw allow from "$NWE_TRUSTED_IP" to any port 49210 proto tcp |
45 | 32 | else |
46 | | - echo " [!] Could not install UFW — open ports manually" |
| 33 | + nwe_run_privileged ufw allow 49210/tcp |
47 | 34 | fi |
| 35 | +else |
| 36 | + echo " Firewall unchanged. Set NWE_CONFIGURE_FIREWALL=1 to manage it." |
48 | 37 | fi |
49 | 38 |
|
50 | | -echo "" |
51 | | -echo "═══════════════════════════════════════════════════════════════" |
52 | | -echo " California FBI™ install complete." |
53 | | -echo " Backend port: 49210" |
54 | | -echo " Frontend: http://localhost:8080/california-fbi/" |
55 | | -echo "═══════════════════════════════════════════════════════════════" |
| 39 | +nwe_step "Verifying FBI module installation" |
| 40 | +nwe_verify_path "$MOD_ROOT" |
| 41 | +echo "[OK] California FBI module installation complete. Backend port: 49210" |
0 commit comments