Repository navigation
fix(network-ops): isolate certipy-ad and bloodyAD into uv tool envs #191
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -98,6 +98,35 @@ else | |
| rm -rf /tmp/nxc.zip /tmp/nxc-extract 2>/dev/null || true | ||
| fi | ||
|
|
||
| # -- certipy-ad --------------------------------------------------------------- | ||
| # Installed into its own isolated `uv tool` environment (not declared in | ||
| # dependencies.python) to avoid dependency conflicts with the shared | ||
| # capability virtualenv. Lands the `certipy`/`certipy-ad` command in | ||
| # $HOME/.local/bin. | ||
| if command -v certipy >/dev/null 2>&1 || command -v certipy-ad >/dev/null 2>&1; then | ||
| echo "[*] certipy already present, skipping" | ||
|
Comment on lines
+106
to
+107
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This case is a long-lived sandbox that already has the broken certipy-ad 4.8.2 on PATH. Remediating pre-existing broken copies is deliberately out of scope here — this change fixes fresh provisioning. The skip-if-present guard is also intended behavior: a runtime that already has a working tool should make no outbound install request. On a fresh runtime there is no pre-existing |
||
| elif ! command -v uv >/dev/null 2>&1; then | ||
| echo "[!] uv not found, cannot install certipy-ad (non-fatal)" | ||
| else | ||
| echo "[+] Installing certipy-ad 5.1.0 (uv tool)" | ||
| uv tool install certipy-ad==5.1.0 \ | ||
| || echo "[!] Failed to install certipy-ad (non-fatal)" | ||
| fi | ||
|
|
||
| # -- bloodyAD ------------------------------------------------------------- | ||
| # Installed into its own isolated `uv tool` environment (not declared in | ||
| # dependencies.python) to avoid dependency conflicts with the shared | ||
| # capability virtualenv. Lands the `bloodyAD` command in $HOME/.local/bin. | ||
| if command -v bloodyAD >/dev/null 2>&1; then | ||
| echo "[*] bloodyAD already present, skipping" | ||
| elif ! command -v uv >/dev/null 2>&1; then | ||
| echo "[!] uv not found, cannot install bloodyAD (non-fatal)" | ||
| else | ||
| echo "[+] Installing bloodyAD 2.5.5 (uv tool)" | ||
| uv tool install bloodyAD==2.5.5 \ | ||
| || echo "[!] Failed to install bloodyAD (non-fatal)" | ||
| fi | ||
|
|
||
| # -- Coercion scripts ------------------------------------------------------- | ||
| # These /opt paths are hardcoded in three places that must stay in sync: here, | ||
| # the coercion-script checks: in capability.yaml, and the path defaults in the | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch — addressed in d914025. network-ops now declares
$HOME/.local/binindependencies.path, mirroringweb-security/capability.yaml, so the directory is appended to PATH for the preflight checks, MCP subprocesses, and the agent's shell tools (including off-platform underdreadnode serve, where the image PATH doesn't apply). This also covers the existingnxcinstall, which lands in the same directory.