kastell 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +1 -1
  2. package/README.tr.md +1 -1
  3. package/dist/adapters/coolify.d.ts.map +1 -1
  4. package/dist/adapters/coolify.js +31 -12
  5. package/dist/adapters/coolify.js.map +1 -1
  6. package/dist/adapters/dokploy.d.ts.map +1 -1
  7. package/dist/adapters/dokploy.js +31 -10
  8. package/dist/adapters/dokploy.js.map +1 -1
  9. package/dist/commands/audit.d.ts.map +1 -1
  10. package/dist/commands/audit.js +49 -7
  11. package/dist/commands/audit.js.map +1 -1
  12. package/dist/commands/interactive.d.ts.map +1 -1
  13. package/dist/commands/interactive.js +123 -35
  14. package/dist/commands/interactive.js.map +1 -1
  15. package/dist/commands/lock.d.ts.map +1 -1
  16. package/dist/commands/lock.js +62 -9
  17. package/dist/commands/lock.js.map +1 -1
  18. package/dist/constants.d.ts +1 -0
  19. package/dist/constants.d.ts.map +1 -1
  20. package/dist/constants.js +2 -1
  21. package/dist/constants.js.map +1 -1
  22. package/dist/core/audit/checks/firewall.d.ts.map +1 -1
  23. package/dist/core/audit/checks/firewall.js +6 -2
  24. package/dist/core/audit/checks/firewall.js.map +1 -1
  25. package/dist/core/audit/commands.d.ts.map +1 -1
  26. package/dist/core/audit/commands.js +60 -27
  27. package/dist/core/audit/commands.js.map +1 -1
  28. package/dist/core/audit/filter.d.ts +27 -0
  29. package/dist/core/audit/filter.d.ts.map +1 -0
  30. package/dist/core/audit/filter.js +53 -0
  31. package/dist/core/audit/filter.js.map +1 -0
  32. package/dist/core/audit/fix.d.ts +6 -0
  33. package/dist/core/audit/fix.d.ts.map +1 -1
  34. package/dist/core/audit/fix.js +44 -4
  35. package/dist/core/audit/fix.js.map +1 -1
  36. package/dist/core/audit/formatters/terminal.d.ts.map +1 -1
  37. package/dist/core/audit/formatters/terminal.js +15 -0
  38. package/dist/core/audit/formatters/terminal.js.map +1 -1
  39. package/dist/core/audit/index.d.ts.map +1 -1
  40. package/dist/core/audit/index.js +6 -1
  41. package/dist/core/audit/index.js.map +1 -1
  42. package/dist/core/audit/listChecks.d.ts.map +1 -1
  43. package/dist/core/audit/listChecks.js +10 -2
  44. package/dist/core/audit/listChecks.js.map +1 -1
  45. package/dist/core/audit/snapshot.d.ts.map +1 -1
  46. package/dist/core/audit/snapshot.js +6 -0
  47. package/dist/core/audit/snapshot.js.map +1 -1
  48. package/dist/core/deploy.d.ts.map +1 -1
  49. package/dist/core/deploy.js +2 -1
  50. package/dist/core/deploy.js.map +1 -1
  51. package/dist/core/lock.d.ts +24 -0
  52. package/dist/core/lock.d.ts.map +1 -1
  53. package/dist/core/lock.js +235 -41
  54. package/dist/core/lock.js.map +1 -1
  55. package/dist/core/provision.d.ts.map +1 -1
  56. package/dist/core/provision.js +15 -12
  57. package/dist/core/provision.js.map +1 -1
  58. package/dist/core/secure.d.ts.map +1 -1
  59. package/dist/core/secure.js +3 -2
  60. package/dist/core/secure.js.map +1 -1
  61. package/dist/index.js +7 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/mcp/server.js +6 -6
  64. package/dist/mcp/server.js.map +1 -1
  65. package/dist/mcp/tools/serverLock.d.ts.map +1 -1
  66. package/dist/mcp/tools/serverLock.js +5 -4
  67. package/dist/mcp/tools/serverLock.js.map +1 -1
  68. package/dist/utils/ssh.d.ts +4 -1
  69. package/dist/utils/ssh.d.ts.map +1 -1
  70. package/dist/utils/ssh.js +40 -19
  71. package/dist/utils/ssh.js.map +1 -1
  72. package/package.json +1 -1
package/README.md CHANGED
@@ -45,7 +45,7 @@ Running `kastell` without any arguments launches an **interactive search menu**
45
45
  ██║ ██╗ ██║ ██║ ███████║ ██║ ███████╗███████╗███████╗
46
46
  ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚══════╝╚══════╝
47
47
 
48
- KASTELL v1.10.0 · Your infrastructure, fortified.
48
+ KASTELL v1.11.0 · Your infrastructure, fortified.
49
49
 
50
50
  $ kastell init --template production → deploy a new server
51
51
  $ kastell status --all → check all servers
package/README.tr.md CHANGED
@@ -45,7 +45,7 @@ npx kastell
45
45
  ██║ ██╗ ██║ ██║ ███████║ ██║ ███████╗███████╗███████╗
46
46
  ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚══════╝╚══════╝
47
47
 
48
- KASTELL v1.10.0 · Your infrastructure, fortified.
48
+ KASTELL v1.11.0 · Your infrastructure, fortified.
49
49
 
50
50
  $ kastell init --template production → deploy a new server
51
51
  $ kastell status --all → check all servers
@@ -1 +1 @@
1
- {"version":3,"file":"coolify.d.ts","sourceRoot":"","sources":["../../src/adapters/coolify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASxD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,aAAa;IAE1B,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAuElC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAI1B,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;CActB"}
1
+ {"version":3,"file":"coolify.d.ts","sourceRoot":"","sources":["../../src/adapters/coolify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASxD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,aAAa;IAE1B,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IA0FlC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAI1B,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;CActB"}
@@ -9,6 +9,7 @@ export class CoolifyAdapter {
9
9
  const safeName = serverName.replace(/[^a-z0-9-]/g, "");
10
10
  return `#!/bin/bash
11
11
  set +e
12
+ export DEBIAN_FRONTEND=noninteractive
12
13
  touch /var/log/kastell-install.log
13
14
  chmod 600 /var/log/kastell-install.log
14
15
  exec > >(tee /var/log/kastell-install.log) 2>&1
@@ -32,22 +33,21 @@ while [ $ATTEMPTS -lt $MAX_ATTEMPTS ]; do
32
33
  sleep 2
33
34
  done
34
35
 
36
+ # Disable needrestart to prevent interactive prompts during Docker/package installation
37
+ echo "Disabling needrestart..."
38
+ if dpkg -l needrestart > /dev/null 2>&1; then
39
+ apt-get remove -y needrestart || true
40
+ fi
41
+ export NEEDRESTART_MODE=a
42
+ export NEEDRESTART_SUSPEND=1
43
+
35
44
  # Update system
36
45
  echo "Updating system packages..."
37
46
  apt-get update -y
38
47
 
39
- # Install Coolify
40
- echo "Installing Coolify..."
41
- curl -fsSL https://cdn.coollabs.io/coolify/install.sh -o /tmp/coolify-install.sh && head -c2 /tmp/coolify-install.sh | grep -q "#!" && [ "$(wc -c < /tmp/coolify-install.sh)" -gt 100 ] && bash /tmp/coolify-install.sh && rm -f /tmp/coolify-install.sh
42
-
43
- # Wait for services
44
- echo "Waiting for Coolify services to start..."
45
- sleep 30
46
-
47
- # Configure firewall for Coolify
48
+ # Configure firewall BEFORE installer (prevents SSH lockout if installer hangs)
48
49
  echo "Configuring firewall..."
49
50
  if command -v ufw &> /dev/null; then
50
- # DigitalOcean and UFW-enabled systems
51
51
  ufw allow 22/tcp
52
52
  ufw allow 80/tcp
53
53
  ufw allow 443/tcp
@@ -56,7 +56,6 @@ if command -v ufw &> /dev/null; then
56
56
  ufw allow 6002/tcp
57
57
  echo "y" | ufw enable || true
58
58
  else
59
- # Hetzner and iptables-based systems
60
59
  iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
61
60
  iptables -A INPUT -p tcp --dport 22 -j ACCEPT
62
61
  iptables -A INPUT -p tcp --dport 80 -j ACCEPT
@@ -64,9 +63,29 @@ else
64
63
  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
65
64
  mkdir -p /etc/iptables
66
65
  iptables-save > /etc/iptables/rules.v4 || true
67
- DEBIAN_FRONTEND=noninteractive apt-get install -y iptables-persistent || true
66
+ apt-get install -y iptables-persistent || true
67
+ fi
68
+
69
+ # Switch from socket activation to traditional SSH service (prevents Ubuntu 24.04 ssh.socket bugs)
70
+ echo "Switching to traditional SSH service..."
71
+ systemctl disable --now ssh.socket 2>/dev/null || true
72
+ systemctl enable --now ssh.service 2>/dev/null || true
73
+
74
+ # Install Coolify
75
+ echo "Installing Coolify..."
76
+ curl -fsSL https://cdn.coollabs.io/coolify/install.sh -o /tmp/coolify-install.sh && head -c2 /tmp/coolify-install.sh | grep -q "#!" && [ "$(wc -c < /tmp/coolify-install.sh)" -gt 100 ] && env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a NEEDRESTART_SUSPEND=1 bash /tmp/coolify-install.sh && rm -f /tmp/coolify-install.sh
77
+
78
+ # Ensure SSH remains accessible after Coolify installation
79
+ echo "Ensuring SSH service is active..."
80
+ if ! ss -tlnp | grep -q ':22 '; then
81
+ systemctl restart ssh.service 2>/dev/null || systemctl restart sshd.service 2>/dev/null || true
82
+ sleep 2
68
83
  fi
69
84
 
85
+ # Wait for services
86
+ echo "Waiting for Coolify services to start..."
87
+ sleep 30
88
+
70
89
  echo "=================================="
71
90
  echo "Coolify installation completed!"
72
91
  echo "=================================="
@@ -1 +1 @@
1
- {"version":3,"file":"coolify.js","sourceRoot":"","sources":["../../src/adapters/coolify.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGxH,4EAA4E;AAC5E,MAAM,eAAe,GAAG,+DAA+D,CAAC;AACxF,MAAM,kBAAkB,GAAG,cAAc,mBAAmB,kCAAkC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,mEAAmE,CAAC;AAE5N,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,SAAS,CAAC;IAE1B,YAAY,CAAC,UAAkB;QAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO;;;;;;;;gBAQK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DvB,CAAC;IACA,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,MAAe;QAC3C,OAAO,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,UAAkB,EAClB,QAAgB;QAEhB,OAAO,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,EAAU,EACV,UAAkB,EAClB,QAAwB,EACxB,OAA6B;QAE7B,OAAO,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,OAAO,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,YAAY,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAED,gFAAgF;IAExE,UAAU;QAChB,OAAO,iGAAiG,CAAC;IAC3G,CAAC;IAEO,YAAY;QAClB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,6GAA6G;YACxH,YAAY,EAAE,8MAA8M;YAC5N,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,UAAU,EAAE,6DAA6D;YACzE,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,iGAAiG;YAC1G,UAAU,EAAE,sHAAsH;YAClI,YAAY,EAAE,6FAA6F;YAC3G,gBAAgB,EAAE,4DAA4D;YAC9E,QAAQ,EAAE,kGAAkG;YAC5G,UAAU,EAAE,6DAA6D;YACzE,aAAa,EAAE,kGAAkG;YACjH,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"coolify.js","sourceRoot":"","sources":["../../src/adapters/coolify.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGxH,4EAA4E;AAC5E,MAAM,eAAe,GAAG,+DAA+D,CAAC;AACxF,MAAM,kBAAkB,GAAG,cAAc,mBAAmB,kCAAkC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,mEAAmE,CAAC;AAE5N,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,SAAS,CAAC;IAE1B,YAAY,CAAC,UAAkB;QAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO;;;;;;;;;gBASK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EvB,CAAC;IACA,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,MAAe;QAC3C,OAAO,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,UAAkB,EAClB,QAAgB;QAEhB,OAAO,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,EAAU,EACV,UAAkB,EAClB,QAAwB,EACxB,OAA6B;QAE7B,OAAO,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,OAAO,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,YAAY,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAED,gFAAgF;IAExE,UAAU;QAChB,OAAO,iGAAiG,CAAC;IAC3G,CAAC;IAEO,YAAY;QAClB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,6GAA6G;YACxH,YAAY,EAAE,8MAA8M;YAC5N,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,UAAU,EAAE,6DAA6D;YACzE,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,iGAAiG;YAC1G,UAAU,EAAE,sHAAsH;YAClI,YAAY,EAAE,6FAA6F;YAC3G,gBAAgB,EAAE,4DAA4D;YAC9E,QAAQ,EAAE,kGAAkG;YAC5G,UAAU,EAAE,6DAA6D;YACzE,aAAa,EAAE,kGAAkG;YACjH,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"dokploy.d.ts","sourceRoot":"","sources":["../../src/adapters/dokploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASxD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,aAAa;IAE1B,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IA4ElC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAI1B,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;CActB"}
1
+ {"version":3,"file":"dokploy.d.ts","sourceRoot":"","sources":["../../src/adapters/dokploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASxD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,aAAa;IAE1B,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAiGlC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAI1B,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;CActB"}
@@ -9,6 +9,7 @@ export class DokployAdapter {
9
9
  const safeName = serverName.replace(/[^a-z0-9-]/g, "");
10
10
  return `#!/bin/bash
11
11
  set +e
12
+ export DEBIAN_FRONTEND=noninteractive
12
13
  touch /var/log/kastell-install.log
13
14
  chmod 600 /var/log/kastell-install.log
14
15
  exec > >(tee /var/log/kastell-install.log) 2>&1
@@ -33,19 +34,19 @@ while [ $ATTEMPTS -lt $MAX_ATTEMPTS ]; do
33
34
  sleep 2
34
35
  done
35
36
 
37
+ # Disable needrestart to prevent interactive prompts during Docker/package installation
38
+ echo "Disabling needrestart..."
39
+ if dpkg -l needrestart > /dev/null 2>&1; then
40
+ apt-get remove -y needrestart || true
41
+ fi
42
+ export NEEDRESTART_MODE=a
43
+ export NEEDRESTART_SUSPEND=1
44
+
36
45
  # Update system
37
46
  echo "Updating system packages..."
38
47
  apt-get update -y
39
48
 
40
- # Install Dokploy
41
- echo "Installing Dokploy..."
42
- curl -sSL https://dokploy.com/install.sh -o /tmp/dokploy-install.sh && head -c2 /tmp/dokploy-install.sh | grep -q "#!" && [ "$(wc -c < /tmp/dokploy-install.sh)" -gt 100 ] && sh /tmp/dokploy-install.sh && rm -f /tmp/dokploy-install.sh
43
-
44
- # Wait for services
45
- echo "Waiting for Dokploy services to start..."
46
- sleep 30
47
-
48
- # Configure firewall for Dokploy + Docker Swarm
49
+ # Configure firewall BEFORE installer (prevents SSH lockout if installer hangs)
49
50
  echo "Configuring firewall..."
50
51
  if command -v ufw &> /dev/null; then
51
52
  ufw allow 22/tcp
@@ -69,9 +70,29 @@ else
69
70
  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
70
71
  mkdir -p /etc/iptables
71
72
  iptables-save > /etc/iptables/rules.v4 || true
72
- DEBIAN_FRONTEND=noninteractive apt-get install -y iptables-persistent || true
73
+ apt-get install -y iptables-persistent || true
74
+ fi
75
+
76
+ # Switch from socket activation to traditional SSH service (prevents Ubuntu 24.04 ssh.socket bugs)
77
+ echo "Switching to traditional SSH service..."
78
+ systemctl disable --now ssh.socket 2>/dev/null || true
79
+ systemctl enable --now ssh.service 2>/dev/null || true
80
+
81
+ # Install Dokploy
82
+ echo "Installing Dokploy..."
83
+ curl -sSL https://dokploy.com/install.sh -o /tmp/dokploy-install.sh && head -c2 /tmp/dokploy-install.sh | grep -q "#!" && [ "$(wc -c < /tmp/dokploy-install.sh)" -gt 100 ] && env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a NEEDRESTART_SUSPEND=1 sh /tmp/dokploy-install.sh && rm -f /tmp/dokploy-install.sh
84
+
85
+ # Ensure SSH remains accessible after installation
86
+ echo "Ensuring SSH service is active..."
87
+ if ! ss -tlnp | grep -q ':22 '; then
88
+ systemctl restart ssh.service 2>/dev/null || systemctl restart sshd.service 2>/dev/null || true
89
+ sleep 2
73
90
  fi
74
91
 
92
+ # Wait for services
93
+ echo "Waiting for Dokploy services to start..."
94
+ sleep 30
95
+
75
96
  echo "=================================="
76
97
  echo "Dokploy installation completed!"
77
98
  echo "=================================="
@@ -1 +1 @@
1
- {"version":3,"file":"dokploy.js","sourceRoot":"","sources":["../../src/adapters/dokploy.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGxH,4EAA4E;AAC5E,MAAM,eAAe,GAAG,+DAA+D,CAAC;AACxF,MAAM,kBAAkB,GAAG,aAAa,mBAAmB,kCAAkC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,wEAAwE,CAAC;AAEhO,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,SAAS,CAAC;IAE1B,YAAY,CAAC,UAAkB;QAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO;;;;;;;;gBAQK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DvB,CAAC;IACA,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,MAAe;QAC3C,OAAO,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,UAAkB,EAClB,QAAgB;QAEhB,OAAO,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,EAAU,EACV,UAAkB,EAClB,QAAwB,EACxB,OAA6B;QAE7B,OAAO,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,OAAO,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,YAAY,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAED,+EAA+E;IAEvE,UAAU;QAChB,OAAO,iGAAiG,CAAC;IAC3G,CAAC;IAEO,YAAY;QAClB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,8JAA8J;YACzK,YAAY,EAAE,sDAAsD;YACpE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,UAAU,EAAE,6DAA6D;YACzE,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,gCAAgC;YACzC,UAAU,EAAE,oDAAoD;YAChE,YAAY,EAAE,8IAA8I;YAC5J,gBAAgB,EAAE,oDAAoD;YACtE,QAAQ,EAAE,gCAAgC;YAC1C,UAAU,EAAE,6DAA6D;YACzE,aAAa,EAAE,gCAAgC;YAC/C,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"dokploy.js","sourceRoot":"","sources":["../../src/adapters/dokploy.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGxH,4EAA4E;AAC5E,MAAM,eAAe,GAAG,+DAA+D,CAAC;AACxF,MAAM,kBAAkB,GAAG,aAAa,mBAAmB,kCAAkC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,wEAAwE,CAAC;AAEhO,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,SAAS,CAAC;IAE1B,YAAY,CAAC,UAAkB;QAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO;;;;;;;;;gBASK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFvB,CAAC;IACA,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,MAAe;QAC3C,OAAO,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,UAAkB,EAClB,QAAgB;QAEhB,OAAO,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,EAAU,EACV,UAAkB,EAClB,QAAwB,EACxB,OAA6B;QAE7B,OAAO,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,OAAO,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,YAAY,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAED,+EAA+E;IAEvE,UAAU;QAChB,OAAO,iGAAiG,CAAC;IAC3G,CAAC;IAEO,YAAY;QAClB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,8JAA8J;YACzK,YAAY,EAAE,sDAAsD;YACpE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,UAAU,EAAE,6DAA6D;YACzE,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,gCAAgC;YACzC,UAAU,EAAE,oDAAoD;YAChE,YAAY,EAAE,8IAA8I;YAC5J,gBAAgB,EAAE,oDAAoD;YACtE,QAAQ,EAAE,gCAAgC;YAC1C,UAAU,EAAE,6DAA6D;YACzE,aAAa,EAAE,gCAAgC;YAC/C,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAUzE,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAkSf"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAYzE,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CA+Uf"}
@@ -11,7 +11,7 @@ import { selectFormatter } from "../core/audit/formatters/index.js";
11
11
  import { saveAuditHistory, loadAuditHistory, detectTrend, computeTrend } from "../core/audit/history.js";
12
12
  import { formatTrendTerminal, formatTrendJson } from "../core/audit/formatters/trend.js";
13
13
  import { saveSnapshot, listSnapshots } from "../core/audit/snapshot.js";
14
- import { runFix } from "../core/audit/fix.js";
14
+ import { runFix, runScoreCheck } from "../core/audit/fix.js";
15
15
  import { watchAudit } from "../core/audit/watch.js";
16
16
  import { diffAudits, resolveSnapshotRef, formatDiffTerminal, formatDiffJson } from "../core/audit/diff.js";
17
17
  import { getServers } from "../utils/config.js";
@@ -19,6 +19,7 @@ import { listAllChecks, formatListChecksTerminal, formatListChecksJson } from ".
19
19
  import { filterByProfile, calculateComplianceDetail } from "../core/audit/compliance/scoring.js";
20
20
  import { formatComplianceReport } from "../core/audit/formatters/compliance.js";
21
21
  import { FRAMEWORK_KEY_MAP } from "../core/audit/compliance/types.js";
22
+ import { filterAuditResult, buildFilterAnnotation, parseSeverity } from "../core/audit/filter.js";
22
23
  function printDiff(diff, json) {
23
24
  console.log(json ? formatDiffJson(diff) : formatDiffTerminal(diff));
24
25
  if (diff.regressions.length > 0) {
@@ -36,7 +37,9 @@ export async function auditCommand(serverName, options = {}) {
36
37
  if (options.category)
37
38
  filter.category = options.category;
38
39
  if (options.severity) {
39
- filter.severity = options.severity;
40
+ const parsed = parseSeverity(options.severity);
41
+ if (parsed)
42
+ filter.severity = parsed;
40
43
  }
41
44
  const checks = listAllChecks(filter);
42
45
  if (options.json) {
@@ -250,6 +253,18 @@ export async function auditCommand(serverName, options = {}) {
250
253
  await saveSnapshot(auditResult, snapshotName);
251
254
  logger.success(`Snapshot saved for ${name}`);
252
255
  }
256
+ // Apply display-only filter (AUX-01, AUX-02, AUX-03)
257
+ // MUST be after saveAuditHistory + saveSnapshot to preserve unfiltered data (AUX-04)
258
+ const parsedSeverity = parseSeverity(options.severity);
259
+ if (options.severity && !parsedSeverity) {
260
+ logger.warning(`Invalid severity "${options.severity}" — expected: critical, warning, info. Showing all.`);
261
+ }
262
+ const auditFilter = {
263
+ category: options.category,
264
+ severity: parsedSeverity,
265
+ };
266
+ const displayResult = filterAuditResult(auditResult, auditFilter);
267
+ const filterAnnotation = buildFilterAnnotation(auditFilter);
253
268
  // --fix mode: run fix engine
254
269
  if (options.fix) {
255
270
  const fixResult = await runFix(ip, auditResult, {
@@ -275,12 +290,33 @@ export async function auditCommand(serverName, options = {}) {
275
290
  if (fixResult.errors.length > 0) {
276
291
  logger.error(`Errors: ${fixResult.errors.join(", ")}`);
277
292
  }
293
+ // Score delta after fix (AUX-05, AUX-06, AUX-07)
294
+ // Guard: only run when fixes were actually applied (not dry-run, not zero-fix)
295
+ if (fixResult.applied.length > 0) {
296
+ const affectedCats = [
297
+ ...new Set(fixResult.applied
298
+ .map((checkId) => {
299
+ for (const cat of auditResult.categories) {
300
+ if (cat.checks.some((ch) => ch.id === checkId))
301
+ return cat.name;
302
+ }
303
+ return undefined;
304
+ })
305
+ .filter((name) => name !== undefined)),
306
+ ];
307
+ const newScore = await runScoreCheck(ip, platform, auditResult, affectedCats);
308
+ if (newScore !== null) {
309
+ const delta = newScore - auditResult.overallScore;
310
+ const sign = delta >= 0 ? "+" : "";
311
+ logger.success(`Score: ${auditResult.overallScore} \u2192 ${newScore} (${sign}${delta})`);
312
+ }
313
+ }
278
314
  }
279
315
  return;
280
316
  }
281
317
  // --score-only: just print score and exit
282
318
  if (options.scoreOnly) {
283
- console.log(`${auditResult.overallScore}/100`);
319
+ console.log(`${auditResult.overallScore}/100${filterAnnotation}`);
284
320
  if (options.threshold) {
285
321
  const threshold = parseInt(options.threshold, 10);
286
322
  if (isNaN(threshold)) {
@@ -288,15 +324,20 @@ export async function auditCommand(serverName, options = {}) {
288
324
  return;
289
325
  }
290
326
  if (auditResult.overallScore < threshold) {
291
- process.exit(1);
327
+ process.exitCode = 1;
328
+ return;
292
329
  }
293
330
  }
294
331
  return;
295
332
  }
296
- // Select and run formatter
333
+ // Select and run formatter (uses displayResult for filtered output)
297
334
  const formatter = await selectFormatter(options);
298
- const output = formatter(auditResult);
335
+ const output = formatter(displayResult);
299
336
  console.log(output);
337
+ // Show filter annotation when active
338
+ if (filterAnnotation) {
339
+ logger.info(`Score: ${auditResult.overallScore}/100${filterAnnotation}`);
340
+ }
300
341
  // Show quick wins in terminal output
301
342
  if (auditResult.quickWins.length > 0 && !options.json && !options.badge && !options.report) {
302
343
  const lastWin = auditResult.quickWins[auditResult.quickWins.length - 1];
@@ -311,7 +352,8 @@ export async function auditCommand(serverName, options = {}) {
311
352
  }
312
353
  if (auditResult.overallScore < threshold) {
313
354
  logger.error(`Score ${auditResult.overallScore} is below threshold ${threshold}`);
314
- process.exit(1);
355
+ process.exitCode = 1;
356
+ return;
315
357
  }
316
358
  }
317
359
  }
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/commands/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA8FhC,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjE,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAAC;AAkBxF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAsBpE;AAubD,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAiChE"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/commands/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA+FhC,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjE,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAAC;AAkBxF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAsBpE;AA0gBD,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAiChE"}
@@ -23,7 +23,7 @@ const MENU = [
23
23
  actions: [
24
24
  { name: "Run security audit", value: "audit", description: "Score server security across 27 categories with compliance mapping" },
25
25
  { name: "Harden SSH & fail2ban", value: "secure", description: "Configure SSH security and brute-force protection" },
26
- { name: "Lock server (production hardening)", value: "lock", description: "Apply SSH + fail2ban + UFW + sysctl hardening in one step" },
26
+ { name: "Lock server (production hardening)", value: "lock", description: "Apply 16-step hardening: SSH, fail2ban, UFW, sysctl, auditd, AIDE, and more" },
27
27
  { name: "Manage firewall (UFW)", value: "firewall", description: "View, add, or remove UFW firewall port rules" },
28
28
  { name: "Manage domain & SSL", value: "domain", description: "Set custom domains and configure SSL certificates" },
29
29
  { name: "Collect forensic evidence", value: "evidence", description: "Gather logs, ports, firewall rules with SHA256 checksums" },
@@ -74,6 +74,7 @@ const MENU = [
74
74
  { name: "Export server list", value: "export", description: "Export server configuration to a JSON file" },
75
75
  { name: "Import server list", value: "import", description: "Import servers from a previously exported JSON file" },
76
76
  { name: "Shell completions", value: "completions", description: "Generate bash, zsh, or fish completion scripts" },
77
+ { name: "Check version", value: "version", description: "Show current Kastell version and check for updates" },
77
78
  ],
78
79
  },
79
80
  ];
@@ -261,57 +262,62 @@ async function promptSnapshot() {
261
262
  return ["snapshot", sub];
262
263
  }
263
264
  async function promptMonitor() {
264
- const { containers } = await inquirer.prompt([
265
- {
266
- type: "confirm",
267
- name: "containers",
268
- message: "Include Docker container list?",
269
- default: false,
270
- },
265
+ const mode = await promptList("Monitor options:", [
266
+ { name: "Basic (CPU/RAM/Disk)", value: "basic" },
267
+ { name: "With Docker containers", value: "containers" },
271
268
  ]);
269
+ if (!mode)
270
+ return null;
272
271
  const args = ["monitor"];
273
- if (containers)
272
+ if (mode === "containers")
274
273
  args.push("--containers");
275
274
  return args;
276
275
  }
277
276
  async function promptMaintain() {
278
- const { skipReboot } = await inquirer.prompt([
279
- {
280
- type: "confirm",
281
- name: "skipReboot",
282
- message: "Skip reboot step? (useful during business hours)",
283
- default: false,
284
- },
277
+ const mode = await promptList("Maintenance mode:", [
278
+ { name: "Full cycle (update + reboot)", value: "full" },
279
+ { name: "Skip reboot (business hours)", value: "skip-reboot" },
285
280
  ]);
281
+ if (!mode)
282
+ return null;
286
283
  const args = ["maintain"];
287
- if (skipReboot)
284
+ if (mode === "skip-reboot")
288
285
  args.push("--skip-reboot");
289
286
  return args;
290
287
  }
291
288
  async function promptStatus() {
292
- const { all } = await inquirer.prompt([
293
- { type: "confirm", name: "all", message: "Check all servers at once?", default: false },
289
+ const mode = await promptList("Status check:", [
290
+ { name: "Single server", value: "single" },
291
+ { name: "All servers at once", value: "all" },
294
292
  ]);
293
+ if (!mode)
294
+ return null;
295
295
  const args = ["status"];
296
- if (all)
296
+ if (mode === "all")
297
297
  args.push("--all");
298
298
  return args;
299
299
  }
300
300
  async function promptUpdate() {
301
- const { all } = await inquirer.prompt([
302
- { type: "confirm", name: "all", message: "Update all servers at once?", default: false },
301
+ const mode = await promptList("Update scope:", [
302
+ { name: "Single server", value: "single" },
303
+ { name: "All servers at once", value: "all" },
303
304
  ]);
305
+ if (!mode)
306
+ return null;
304
307
  const args = ["update"];
305
- if (all)
308
+ if (mode === "all")
306
309
  args.push("--all");
307
310
  return args;
308
311
  }
309
312
  async function promptDoctor() {
310
- const { fresh } = await inquirer.prompt([
311
- { type: "confirm", name: "fresh", message: "Fetch fresh data via SSH? (slower but accurate)", default: true },
313
+ const mode = await promptList("Doctor mode:", [
314
+ { name: "Fresh data via SSH (accurate)", value: "fresh" },
315
+ { name: "Use cached metrics (fast)", value: "cached" },
312
316
  ]);
317
+ if (!mode)
318
+ return null;
313
319
  const args = ["doctor"];
314
- if (fresh)
320
+ if (mode === "fresh")
315
321
  args.push("--fresh");
316
322
  return args;
317
323
  }
@@ -364,6 +370,11 @@ async function promptBackup() {
364
370
  return args;
365
371
  }
366
372
  async function promptImport() {
373
+ const action = await promptList("Import server list:", [
374
+ { name: "Import from JSON file", value: "file" },
375
+ ]);
376
+ if (!action)
377
+ return null;
367
378
  const { path } = await inquirer.prompt([
368
379
  {
369
380
  type: "input",
@@ -447,6 +458,74 @@ async function promptAudit() {
447
458
  args.push("--badge");
448
459
  else if (format === "trend")
449
460
  args.push("--trend");
461
+ // Optional category/severity filters (AUX-01, AUX-02)
462
+ const filter = await promptList("Filter results?", [
463
+ { name: "No filter (show all)", value: "none" },
464
+ { name: "Filter by category", value: "category" },
465
+ { name: "Filter by severity", value: "severity" },
466
+ { name: "Filter by both", value: "both" },
467
+ ]);
468
+ if (!filter)
469
+ return null;
470
+ if (filter === "category" || filter === "both") {
471
+ const TOP_CATEGORIES = [
472
+ { name: "SSH", value: "ssh" },
473
+ { name: "Firewall", value: "firewall" },
474
+ { name: "Updates", value: "updates" },
475
+ { name: "Auth", value: "auth" },
476
+ { name: "Docker", value: "docker" },
477
+ { name: "Network", value: "network" },
478
+ { name: "Kernel", value: "kernel" },
479
+ { name: "Logging", value: "logging" },
480
+ ];
481
+ const ALL_CATEGORIES = [
482
+ ...TOP_CATEGORIES,
483
+ { name: "Filesystem", value: "filesystem" },
484
+ { name: "Accounts", value: "accounts" },
485
+ { name: "Services", value: "services" },
486
+ { name: "Boot", value: "boot" },
487
+ { name: "Scheduling", value: "scheduling" },
488
+ { name: "Time", value: "time" },
489
+ { name: "Banners", value: "banners" },
490
+ { name: "Crypto", value: "crypto" },
491
+ { name: "File Integrity", value: "file integrity" },
492
+ { name: "Malware", value: "malware" },
493
+ { name: "MAC", value: "mac" },
494
+ { name: "Memory", value: "memory" },
495
+ { name: "Secrets", value: "secrets" },
496
+ { name: "Cloud Metadata", value: "cloud metadata" },
497
+ { name: "Supply Chain", value: "supply chain" },
498
+ { name: "Backup Hygiene", value: "backup hygiene" },
499
+ { name: "Resource Limits", value: "resource limits" },
500
+ { name: "Incident Readiness", value: "incident readiness" },
501
+ { name: "DNS Security", value: "dns security" },
502
+ ];
503
+ const category = await promptList("Category:", [
504
+ ...TOP_CATEGORIES,
505
+ { name: "Show all 27 categories...", value: "__all__" },
506
+ ]);
507
+ if (!category)
508
+ return null;
509
+ if (category === "__all__") {
510
+ const fullCategory = await promptList("Category:", ALL_CATEGORIES);
511
+ if (!fullCategory)
512
+ return null;
513
+ args.push("--category", fullCategory);
514
+ }
515
+ else {
516
+ args.push("--category", category);
517
+ }
518
+ }
519
+ if (filter === "severity" || filter === "both") {
520
+ const severity = await promptList("Severity:", [
521
+ { name: "Critical only", value: "critical" },
522
+ { name: "Warning", value: "warning" },
523
+ { name: "Info", value: "info" },
524
+ ]);
525
+ if (!severity)
526
+ return null;
527
+ args.push("--severity", severity);
528
+ }
450
529
  return args;
451
530
  }
452
531
  async function promptLock() {
@@ -464,15 +543,24 @@ async function promptLock() {
464
543
  return args;
465
544
  }
466
545
  async function promptEvidence() {
467
- const { name } = await inquirer.prompt([
468
- {
469
- type: "input",
470
- name: "name",
471
- message: "Evidence label (e.g. pre-incident, weekly-check):",
472
- default: "manual",
473
- },
546
+ const action = await promptList("Evidence collection:", [
547
+ { name: "Collect with default label", value: "default" },
548
+ { name: "Collect with custom label", value: "custom" },
474
549
  ]);
475
- return ["evidence", "--name", name];
550
+ if (!action)
551
+ return null;
552
+ if (action === "custom") {
553
+ const { name } = await inquirer.prompt([
554
+ {
555
+ type: "input",
556
+ name: "name",
557
+ message: "Evidence label (e.g. pre-incident, weekly-check):",
558
+ default: "manual",
559
+ },
560
+ ]);
561
+ return ["evidence", "--name", name];
562
+ }
563
+ return ["evidence", "--name", "manual"];
476
564
  }
477
565
  async function promptGuard() {
478
566
  const sub = await promptList("Guard action:", [
@@ -531,7 +619,7 @@ const SUB_PROMPTS = {
531
619
  };
532
620
  const DIRECT_COMMANDS = new Set([
533
621
  "list", "add", "destroy", "restart", "remove", "restore", "export", "config",
534
- "health", "fleet", "backup-list",
622
+ "health", "fleet", "backup-list", "version",
535
623
  ]);
536
624
  export async function interactiveMenu() {
537
625
  // Header is printed by index.ts before calling interactiveMenu()