aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
6 daysexploitdb: update to 2026_08_19Danilo M.2-4/+4
6 daysmetasploit-framework-bin: update to 6.5.3Danilo M.3-7/+7
12 daysexploitdb: update to 2026_08_12Danilo M.2-4/+4
2026-08-09docs: rename CLAUDE.md to AGENTS.md and update referencesDanilo M.5-491/+493
2026-08-09nuclei: update to 3.11.1Danilo M.2-4/+4
2026-08-09metasploit-framework-bin: update to 6.5.2Danilo M.2-6/+6
2026-08-08CLAUDE.md: document fork setup, file modes, symlink cleanupDanilo M.1-2/+46
Three things a future session would otherwise have to rediscover: - How to recreate the fork clone. Its path was recorded but not the setup, and .git/config isn't tracked, so a re-clone silently loses user.name=danix and commits revert to the global name. Adds the three identity conditions and how to verify them on a live PR. - The 0644 requirement, and that git tracks the exec bit, which is how SecLists and gobuster carried 0755 until sbolint started running. Includes the fix and a repo-wide audit command. - Symlink cleanup now says to run it from the repo root; the old note predates the category layout, where a package-dir-relative find misses other categories.
2026-08-08CLAUDE.md: document the GitHub PR delivery channelDanilo M.1-0/+71
SBo accepts updates to published packages as pull requests (SBo-Github-Workflows.txt). Record that alongside the existing submission-tarball route, plus the facts that took checking: - The fork is a separate clone at ~/Programming/GIT/GITHUB/slackbuilds, never a remote of this repo; the histories are unrelated. - PRs are based on master. Merged PRs display a base of "github", a transient integration branch admins retarget onto and delete, so it is not a branch to target. - The exported commit is synthesized at export time and uses SBo's wording, so local history here stays independent and keeps its own format.
2026-08-08repo: move packages under their SBo categoryDanilo M.62-8/+30
Mirror SBo's own <category>/<package>/ layout instead of a flat <package>/ one. The category is now carried by the directory, so there's no separate map to maintain, and a package exports to the SBo repo at the identical relative path. misc: SecLists, exploitdb, nuclei games: UrbanTerror network: feroxbuster, ffuf, gobuster, metasploit-framework-bin, r8125 Categories taken from the synced SBo tree, which is authoritative. This also repairs two things the flat layout had broken: - test-build's category_of() returned "." for every package, since it derives the category from the parent directory name. - post-commit asserted a fixed depth. It now locates a build by the directory holding the .SlackBuild, and names the archive after the package with the package dir at the tarball root, as SBo expects. Drops the exec bit from SecLists.SlackBuild and gobuster.SlackBuild, flagged by sbolint once the pre-commit hook started running: SBo requires 0644 and ships both that way.
2026-08-08hooks: fix pre-commit sbolint never runningDanilo M.1-1/+16
The sbolint loop extracted build dirs with "cut -d/ -f1,2", which is correct for SBo's own <category>/<package>/ layout but yields a file path in this repo's flat <package>/ layout (e.g. nuclei/nuclei.info). The guard then tested nuclei/nuclei.info/slack-desc, which never exists, so sbolint was silently skipped on every package commit. Walk up from each changed file to the directory holding the .SlackBuild instead. Depth is no longer assumed, so this works for the current flat layout and for <category>/<package>/ after the planned migration.
2026-08-07CLAUDE.md: fix msf completion regen, gem paths are mandatoryDanilo M.1-6/+29
The extract-to-tmp generator command as documented never worked on its own. The embedded ruby has /opt/metasploit-framework baked in as its prefix, so bundler resolves gems there regardless of the extract dir and fails with Bundler::GemNotFound. It only appeared to work when a host install sat at that path, which also meant it read the installed version rather than the one being packaged. Add the required GEM_HOME/GEM_PATH/BUNDLE_GEMFILE, note that the ruby version in the gem path moves on upstream bumps, and drop the advice to fall back to a live /opt install. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07metasploit-framework-bin: update to 6.5.1Danilo M.3-7/+7
Regenerated msfvenom.bash-completion against the 6.5.1 framework. Man pages checked against kali, unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30CLAUDE.md: prefer extract-to-tmp over host install for msf artifact regenDanilo M.1-9/+19
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30metasploit-framework-bin: update to 6.4.147Danilo M.3-7/+7
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16nvchecker: use_latest_release for SecLists and ffufDanilo M.1-2/+2
Both cut GitHub Releases; use the lenient releases/latest endpoint instead of the rate-limited git/refs/tags one. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16README: complete package table with all 10 packagesDanilo M.1-1/+8
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16gitignore: ignore local-only LAST_SWEEP sweep reportDanilo M.1-0/+1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14extract docker tooling to ../sbo-dockerbuildDanilo M.16-5116/+23
The test-build tool and image-builder chain grew from a .extras/ helper into a standalone toolchain, now maintained in its own repo (../sbo-dockerbuild). Remove them here (scripts, examples, design docs) and repoint CLAUDE.md: test-building is now done with the installed `test-build` CLI, deps resolved from the SBo tree, both trees verified per bump. Package-maintenance files stay: nvchecker.toml, hooks/, assets/. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14metasploit-framework-bin: update to 6.4.144Danilo M.3-8/+8
Refresh msfvenom.bash-completion against the installed 6.4.144 framework. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14exploitdb: update to 2026-07-09Danilo M.2-4/+4
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14nuclei: update to 3.11.0Danilo M.2-4/+4
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14ffuf: update to 2.2.1Danilo M.2-4/+4
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14test-build: add --keep to save the built target packageDanilo M.1-0/+14
Binary-repack packages (metasploit-framework-bin) need a post-install step on the host: install the package, then regenerate artifacts that require a live install (msfvenom bash-completion, man pages). This repo is deliberately outside the buildsystem workflow, so producing that package meant a manual root build here. --keep instead copies the built target .txz out to <data>/kept/ (path printed) so it can be installed on the host directly from a normal test run. The build is otherwise throwaway; deps are unaffected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14test-build: variant-namespace the dep cache and prune stale digestsDanilo M.2-3/+32
The dep cache was keyed on image digest alone, so a nightly image rebuild orphaned the old digest's cache dir forever (disk creep). Namespace it as <variant>-<digest> and, on each run, prune superseded digests of the SAME variant. Scoping to the variant means a --current run does not wipe the 15.0 cache, so testing both trees back-to-back still reuses built deps (e.g. google-go-lang). Correctness was already fine (digest self-invalidates); this just stops the accumulation, matching sbo-batch-test's invalidate-on-base-update. Add three prune self-checks. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14image-builder: catch build/push failures, prune cache on --forceDanilo M.3-7/+44
The main loop runs build_variant in an `if ! (...)` condition, which suppresses set -e inside the subshell, so a failed docker build fell through to push a nonexistent tag and log "Done" (seen live: a transient containerd export lock reported success). Add explicit exit checks on docker build and docker push in all three scripts; return non-zero so the variant is marked failed. Also prune the build cache before a --force full-image build: --force already implies --no-cache, so the stale cache is dead weight that still loads the snapshotter's lock bookkeeping and has raced the layer export. Best-effort, never fails the build. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14test-build: target the local SlackBuild (CWD/path), deps from the treeDanilo M.2-3/+56
The tool resolved the target package from the SBo tree, so it tested the already-published version, not the local edit under test. Useless for the maintenance workflow, where the point is to verify an edited SlackBuild while its deps come from the tree. resolve_target_dir now takes the target from where you are: - a path (absolute, ./x, or containing /): that dir - a bare name: ./<name>/ under CWD, else CWD itself if it IS <name>/ Repo-agnostic; deps still resolve from the configured SBo tree via find_slackbuild_dir. Add four target-resolution self-checks. Also source /etc/profile.d/*.sh in the build container before running the SlackBuild: the heredoc is a non-login shell, so a bare `go build` picked the system gccgo 1.18 instead of the installed google-go-lang; sourcing profile.d activates dep-provided env (GOROOT/PATH, cargo, ...) as a real login build would. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14image-builder: cron moved to 03:00/05:00 (trees now sync 01:00/02:00)Danilo M.1-14/+15
Tree syncs moved earlier (01:00, 02:00), so the image chain runs earlier too and both variants are ready well before the ~09:00 work start: -current 03:00/03:20/04:30 (ready ~04:35), 15.0 05:00/05:20/06:30 (ready ~06:35). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14image-builder: cron gates both variants, add 15.0, drop --forceDanilo M.1-5/+13
All three scripts self-gate (ChangeLog hash, base digest, full digest + .txz hash), so --force was forcing needless full rebuilds. Drop it: unchanged nights are now cheap no-ops. Add the 15.0 variant (09:00/09:20/11:00), which on frozen stable rebuilds only when the 15.0 repo actually changes. -current stays at 06:00/06:20/08:00. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14image-builder: README cron matches deployed 06:00/06:20/08:00 scheduleDanilo M.1-4/+6
The nightly chain on docker.noland.dnx runs after the NAS repo syncs (04:00, 05:00): bootstrap 06:00, full-image 06:20 (~55 min), testbuild 08:00. Also add the --version current --force flags the deployed crontab actually uses. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14test-build: auto-pull the image from the LAN registry when missingDanilo M.1-10/+16
require_image now docker-pulls ACTIVE_IMAGE (a fully-qualified registry ref) if it is not already local, instead of erroring out and telling the user to pull by hand. Only errors if the pull itself fails. Pull-if-missing only: a stale local tag is not refreshed (noted for a future --pull flag). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14test-build: fix container stdin and move lint in-containerDanilo M.1-23/+23
Two bugs surfaced by the first real end-to-end run: 1. docker run lacked -i, so bash -s got no stdin and the heredoc build script was silently discarded (0s BUILD-FAILED, empty log). Add -i. 2. sbopkglint ran host-side, where it shells out to sudo to installpkg the package for inspection; Slackware has no configured sudo, so lint errored (lxsudo not found / password required). Move the lint into the build container (target only, gated on IS_TARGET), where it runs as root with the baked-in tool and needs no sudo. The host now just reads the LINT-CLEAN / LINT-FINDINGS marker from the log for its summary. Drop the dead host-side lint_pkg function. Verified: feroxbuster builds and lints clean end-to-end against sbo-testbuild:current in 72s. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14test-build: make drop: satisfy a dep at resolution timeDanilo M.3-2/+21
Previously drop: only filtered the resolved build order, so an external dep with no dir in the tree (a 15.0-only SBo package like rust-opt) was flagged UNMET before the order filter ran, and drop: could never rescue it. Move the OV_DROP check into _resolve_visit: a dropped token is now skipped entirely (no recurse, no UNMET, no order entry), satisfying 15.0-only deps that the -current base already provides. Still inert on 15.0. Add self-check coverage and clarify overrides.example. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14test-build: implement installed_in_base from image package dbDanilo M.2-7/+41
Replace the stub with a lazy load of the active image's /var/log/packages: strip each entry's -<ver>-<arch>-<build> tail to the bare package name and match REQUIRES tokens against that set, so a dep the full-install image already provides resolves as met instead of UNMET. Loaded once per run via docker run --rm; TB_BASE_PKGS/TB_BASE_LOADED are test-seedable to bypass docker. Add logic-check coverage. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: feed full build from LAN NFS mirror over HTTP, fix GPG verifyDanilo M.3-2/+38
The full-image build pulled the entire Slackware tree from slackware.nl over WAN: slow (40+ min), flaky (truncated .asc downloads), and it wedged the legacy builder. The identical tree is on LAN NFS, so serve it to the build container instead. - config: add HTTP_MIRROR_HOST/PORT (docker0 bridge gateway + ephemeral port). - bootstrap.sh: bake the LAN HTTP mirror URL into the base image instead of slackware.nl, so the full build inherits it. - build-full-image.sh: start an ephemeral python3 http.server rooted at the variant NFS tree on the bridge for the build duration, killed via the EXIT trap; require_mount so an unmounted NAS fails loud; wait for the server before building. Also fix a silent-failure bug: without importing the Slackware GPG key against the mirror first, slackpkg cannot verify CHECKSUMS.md5 and installs almost nothing (94 packages instead of ~1788). Add "slackpkg update gpg" as the first Dockerfile step; verified the package count jumps 94 -> 1788 with it. Fetch is incremental (slackpkg downloads only installed packages), unlike the buildkit --build-context path which eagerly copies the whole multi-GB tree. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: fix false GPG-update warning from SIGPIPE on yes pipeDanilo M.1-1/+9
bootstrap fed slackpkg update gpg with "yes YES |". When slackpkg exits first (key already valid), yes takes SIGPIPE and, under set -e/pipefail, the pipeline reports non-zero even though the key import succeeded, firing a bogus "slackpkg GPG update failed" warning on every run. Read slackpkg own status via PIPESTATUS[1] instead of the pipeline status, inside an if so set -e/pipefail does not abort on the SIGPIPE; capture PIPESTATUS as the first command in each branch so no intervening command resets it. Verified: warning gone on re-run, key still imports. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: accept any Slackware pkg extension (*.t?z) not just .txzDanilo M.2-10/+11
Upstream sbopkg ships as .tgz, not .txz. The require_pkgs guard, txz_hash find, cp staging, and Dockerfile COPY all hard-coded *.txz, so a .tgz package failed the presence check and was excluded from the rebuild hash. Widen every glob to *.t?z (matches .txz/.tgz/.tbz/.tlz); stage the whole pkgs dir into the image and installpkg the lot, dropping the in-image extension coupling entirely. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: require_mount in changelog gate so unmounted NAS fails loudDanilo M.1-0/+1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: mark scripts executableDanilo M.4-0/+0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: README with VM setup checklistDanilo M.1-0/+58
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: per-variant isolation, non-zero exit on failureDanilo M.3-3/+18
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: guard FULL_DIGEST recompute against set -e abortDanilo M.1-1/+1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: build-sbo-testbuild.shDanilo M.1-0/+117
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: build-full-image.shDanilo M.1-0/+184
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: bootstrap.sh cleanup trap on EXIT not RETURNDanilo M.1-1/+1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: bootstrap.sh base image from NASDanilo M.1-0/+525
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: lib.sh self-checkDanilo M.1-0/+68
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: curl -sS in fetch for http error diagnosticsDanilo M.2-2/+2
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: config + lib.sh helpersDanilo M.2-0/+79
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: add implementation planDanilo M.1-0/+790
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13image-builder: add design specDanilo M.1-0/+216
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>