Skip to content

feat(v1.100.1b.A): GOTH PR-D4 stage 1 — stop shipping nftban-ui + nftban-ui-auth (transitional DEB package)#499

Merged
itcmsgr merged 8 commits intomainfrom
feat/v1.100.1b.A-stop-shipping-goth
Apr 26, 2026
Merged

feat(v1.100.1b.A): GOTH PR-D4 stage 1 — stop shipping nftban-ui + nftban-ui-auth (transitional DEB package)#499
itcmsgr merged 8 commits intomainfrom
feat/v1.100.1b.A-stop-shipping-goth

Conversation

@itcmsgr
Copy link
Copy Markdown
Owner

@itcmsgr itcmsgr commented Apr 26, 2026

Second step of v1.100.x stabilization train. GOTH PR-D4 stage 1 — stop shipping nftban-ui (Web GUI server) and nftban-ui-auth (PAM auth daemon). Source trees retained; binaries no longer built or published.

What this PR does

Stops shipping

  • nftban-ui binary (was: /usr/sbin/nftban-ui)
  • nftban-ui-auth binary (was: /usr/libexec/nftban-ui-auth)
  • nftban-ui.service, nftban-ui-auth.service, nftban-ui-auth.socket systemd units
  • SLSA provenance for nftban-ui (was a dedicated SLSA build job)

Transitional handling for prior installs (per locked decision: transitional, not hard removal)

  • DEB prerm: disable + mask + remove unit files; delete orphaned binaries; clean /run/nftban-ui; daemon-reload
  • RPM %pre: stop + disable + mask + remove unit files; daemon-reload
  • DEB postinst: chown/chmod loop tolerates absent nftban-ui binary

Retained intentionally (out of 1.100.1b.A scope)

  • ❌ Source trees (cmd/nftban-ui/, cmd/nftban-ui-auth/, internal/ui/, internal/auth/, internal/session/, internal/authproto/) → 1.100.1b.B
  • ❌ Cross-cutting shell + Go references in cli/lib/, internal/installer/, internal/nftbanconf/, internal/api/ → 1.100.1b.C
  • ❌ Documentation updates (docs/ARCHITECTURE.md, CONTRIBUTING.md, SECURITY.md, docs/systemd/, docs/REPRODUCIBLE_BUILDS.md) → 1.100.1b.D
  • ❌ Lifecycle completion work (PR-25-30) — explicitly open

Files changed (9 commits)

File Action
.github/workflows/ci-go.yml drop nftban-ui + nftban-ui-auth build/verify entries
.github/workflows/build-packages.yml trim binary inventory loops
.github/workflows/slsa-go-releaser.yml remove build-nftban-ui job + auth notes
.github/slsa/nftban-ui.yml deleted
.github/slsa/nftban-ui-auth.yml deleted
.github/workflows/release.yml remove from binary copy + asset lists + SLSA download retry
build.sh drop build_gui / build_ui_auth / generate_templ; PAM check; usage docs
packaging/build_nftban.sh RPM %install/%files + DEB build helper drop UI binaries+units; transitional cleanup added to %pre and DEB stop-loop
packaging/deb/postinst drop /usr/sbin/nftban-ui from chown loop
packaging/deb/prerm extended transitional cleanup (disable + mask + remove + binary delete + daemon-reload)
install/download-binaries.sh drop UI binaries from fetch/install/verify/SLSA loops
install_prerequisites.sh annotate check_pam as no-longer-required (function retained, not invoked)
install/verify_installation.sh drop optional UI artifact checks
CHANGELOG.md document operator-impact + transitional approach

Test plan

  • Build & Test green
  • Build NFTBan Packages green (DEB ×4 distros + RPM ×2 distros)
  • CI go-binaries artifact contains: nftban-core, nftband, nftban-installer, nftban-validate (no nftban-ui, no nftban-ui-auth)
  • DEB packages do not contain /usr/sbin/nftban-ui or /usr/libexec/nftban-ui-auth
  • DEB packages do not contain nftban-ui*.service / nftban-ui-auth.socket
  • RPM packages: same checks
  • Source builds: go build ./... still passes (cmd/nftban-ui + cmd/nftban-ui-auth source still in tree)
  • Install Canonization green (DEB + RPM)
  • Uninstall Canonization green
  • Update Canonization green
  • Restore Canonization Gate green (PR-24 surfaces untouched)
  • No regression in PR-23 / PR-24 validated surfaces
  • Real-host smoke (lab2 + lab4): upgrade onto a host with prior nftban-ui install; verify services stopped + unit files removed + binary gone after upgrade

Lifecycle completion remains open

PR-25 (restore execution), PR-26 (verification gate), PR-27-30 (maintenance) remain explicitly open lifecycle completion work. Sequenced after stabilization. Not affected by this PR.

🤖 Generated with Claude Code

itcmsgr and others added 8 commits April 26, 2026 23:11
ci-go.yml: drop the explicit go build -o bin/nftban-ui + nftban-ui-auth
steps; trim the verify-binaries loop to nftban-core + nftband +
nftban-validate only. Source still compiles via `go build ./...`.

build-packages.yml: trim all 6 binary-loop occurrences to drop
nftban-ui + nftban-ui-auth.

Part of v1.100.1b.A (GOTH PR-D4 stage 1 — stop shipping). Source trees
under cmd/nftban-ui/, cmd/nftban-ui-auth/, internal/ui/, internal/auth/,
internal/session/, internal/authproto/ remain unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…A configs

slsa-go-releaser.yml: drop the build-nftban-ui job and its assemble-release
dependencies + artifact downloads. SLSA build coverage now scoped to
nftban-core only.

.github/slsa/nftban-ui.yml + nftban-ui-auth.yml: deleted entire files —
their sole purpose was building binaries we no longer ship.

Part of v1.100.1b.A (GOTH PR-D4 stage 1).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…inary lists

Drop nftban-ui-auth from the raw-binary copy step, ASSETS_TO_REPLACE,
EXPECTED_PACKAGES, EXPECTED_ASSETS, SHA256SUMS.build binaries list,
softprops upload list, and SLSA download retry loop. Drop nftban-ui
from EXPECTED_PACKAGES + SLSA download retry loop.

Tightened the missing-asset handler: previously nftban-ui-auth was
treated as optional (SLSA-built). After v1.100.1b.A there are no
optional UI binaries left; all listed assets are now required.

Part of v1.100.1b.A (GOTH PR-D4 stage 1).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Drop build_gui, build_ui_auth, generate_templ functions
- Drop nftban-ui + nftban-ui-auth from default 'all' build sequence
- Convert 'gui' and 'ui-auth' subcommands to error-with-explanation
- Drop PAM headers prerequisite check (nftban-ui-auth was the only consumer)
- Drop nftban-ui + nftban-ui-auth from go.mod fix-dependencies loop
- Update meta:inventory.binaries comment
- Update usage docs

Source trees under cmd/nftban-ui/, cmd/nftban-ui-auth/, internal/ui/
remain in repo and will be removed in 1.100.1b.B.

Part of v1.100.1b.A (GOTH PR-D4 stage 1).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…n-ui-auth from payload

RPM (%install + %files):
- Drop install -D for nftban-ui binary + nftban-ui-auth binary
- Drop install -D for nftban-ui.service + nftban-ui-auth.service + nftban-ui-auth.socket
- Drop %files entries for /usr/sbin/nftban-ui and /usr/libexec/nftban-ui-auth

RPM (%pre transitional cleanup):
- Existing stop/disable loop already includes nftban-ui.* units; extend
  to ALSO mask + rm -f the unit files from /usr/lib/systemd/system on
  upgrade. This handles the case where a prior install had these units;
  after this stage they are stopped, disabled, masked, and the unit
  files are removed.
- daemon-reload after the loop so systemd forgets the masked units.

DEB build helper:
- Drop install -m for nftban-ui + nftban-ui-auth binaries
- Drop install -m for nftban-ui.service + nftban-ui-auth.service + .socket
- Mirror RPM transitional handling in the DEB postrm/postinst stop loop:
  stop + disable + mask + rm -f the unit files; daemon-reload.

Header comment updated to document the v1.100.1b.A scope shift.

Part of v1.100.1b.A (GOTH PR-D4 stage 1). The Debian sub-package
'nftban-ui' (built from packaging/deb/rules) is converted to a
transitional package in a follow-up commit in this same PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…aned nftban-ui

postinst:
- Remove /usr/sbin/nftban-ui from the chown/chmod loop. The binary no
  longer ships in v1.100.1b.A; loop now tolerant of absence.

prerm:
- Existing stop loop already includes nftban-ui.service +
  nftban-ui-auth.service + nftban-ui-auth.socket. Extend with explicit
  transitional cleanup that disables, masks, removes the unit files
  AND deletes orphaned binaries (/usr/sbin/nftban-ui,
  /usr/libexec/nftban-ui-auth) and runtime dir (/run/nftban-ui).
- daemon-reload after the loop so systemd forgets the masked units.

postrm:
- Existing nftban-ui cleanup paths preserved (covers purge case).

These hooks ensure that an `apt upgrade` from a prior nftban release
which DID install nftban-ui produces a clean post-upgrade state even
though the new package no longer carries those binaries/units.

The deb/control + deb/rules files are unused by build_nftban.sh
(the active CI builder); they are legacy artifacts. No edit needed
in 1.100.1b.A; will be addressed if the alt build path is reactivated.

Part of v1.100.1b.A (GOTH PR-D4 stage 1).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…racefully

install/download-binaries.sh:
- Drop nftban-ui + nftban-ui-auth from binary fetch list
- Drop the install steps that copied nftban-ui to /usr/sbin and
  nftban-ui-auth to /usr/libexec
- Drop nftban-ui + nftban-ui-auth from verify-all binaries loop
- Drop nftban-ui + nftban-ui-auth from SLSA provenance check loop
- Update meta:inventory.binaries comment

install_prerequisites.sh:
- Update check_pam() comment: PAM was previously required for
  nftban-ui-auth; now optional. Function is not invoked from main
  prerequisite-check flow, so behavior unchanged. Code retained as
  defensive helper.

install/verify_installation.sh:
- Remove check_file for /usr/sbin/nftban-ui (was marked Optional)
- Remove check_file for /usr/lib/systemd/system/nftban-ui.service
  and nftban-ui-auth.socket (were marked Optional)
- Note that transitional postinst handles cleanup of orphaned
  artifacts from prior installs.

Part of v1.100.1b.A (GOTH PR-D4 stage 1).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Document operator-impacting change (nftban-ui + nftban-ui-auth no
longer shipped; transitional cleanup of orphaned units on upgrade)
and the build/packaging/release pipeline edits that remove them.

Explicitly note that source trees + cross-cutting references + docs
are retained for now and will be addressed in 1.100.1b.B / .C / .D.
Lifecycle completion (PR-25-30) remains open.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@itcmsgr itcmsgr merged commit bf2a9dc into main Apr 26, 2026
49 checks passed
@itcmsgr itcmsgr deleted the feat/v1.100.1b.A-stop-shipping-goth branch April 26, 2026 20:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant