Skip to content

Commit eb4b0f7

Browse files
committed
Adopt unified installation contract for FBI module
1 parent 0a54acb commit eb4b0f7

1 file changed

Lines changed: 30 additions & 44 deletions

File tree

modules/fbi/install/install.sh

Lines changed: 30 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,41 @@
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
64

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
1114

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"
1618

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"
2122
else
22-
echo " [--] No setup-db.sh found (database may already exist)"
23+
nwe_warn "No setup-db.sh found; database setup skipped."
2324
fi
2425

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"
2929
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
4532
else
46-
echo " [!] Could not install UFW — open ports manually"
33+
nwe_run_privileged ufw allow 49210/tcp
4734
fi
35+
else
36+
echo " Firewall unchanged. Set NWE_CONFIGURE_FIREWALL=1 to manage it."
4837
fi
4938

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

Comments
 (0)