107 lines
3.9 KiB
Bash
Executable File
107 lines
3.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
source /opt/rust-package-builder/scripts/lib.sh
|
|
|
|
OUT=${1:?output file required}
|
|
PACKAGE=${2:?package name required}
|
|
URL=$(trim_trailing_slash "$REPOSITORY_URL")
|
|
|
|
export OUT PACKAGE URL OPNSENSE_REPOSITORY_URL REPO_DISTRIBUTION REPO_COMPONENT
|
|
python3 <<'PY_END'
|
|
import html, os
|
|
out=os.environ['OUT']
|
|
package=os.environ['PACKAGE']
|
|
url=os.environ['URL']
|
|
dist=os.environ['REPO_DISTRIBUTION']
|
|
component=os.environ['REPO_COMPONENT']
|
|
opn_url=os.environ['OPNSENSE_REPOSITORY_URL'].rstrip('/')
|
|
h=html.escape
|
|
content=f'''<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<meta name="referrer" content="no-referrer">
|
|
<title>{h(package)} — package repository</title>
|
|
<style>
|
|
:root{{color-scheme:light dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}}
|
|
body{{max-width:920px;margin:0 auto;padding:42px 20px 70px;line-height:1.55}}
|
|
h1{{margin-bottom:.25rem}} .lead{{opacity:.78;margin-top:0}}
|
|
.card{{border:1px solid #8885;border-radius:12px;padding:18px;margin:18px 0}}
|
|
pre{{overflow:auto;padding:16px;border-radius:9px;background:#111;color:#eee;line-height:1.45}}
|
|
code{{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}}
|
|
a{{color:inherit}} .meta{{display:flex;gap:16px;flex-wrap:wrap;opacity:.82;font-size:.94rem}}
|
|
.ok{{font-weight:700}} ul{{padding-left:1.25rem}}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>{h(package)} — package repository</h1>
|
|
<p class="lead">Signed DEB and RPM packages for x86_64/amd64.</p>
|
|
<div class="meta"><span class="ok">Repository active</span><span>{h(url)}</span><span>APT + RPM/DNF</span></div>
|
|
|
|
<div class="card">
|
|
<h2>Debian / Ubuntu</h2>
|
|
<pre><code>curl -fsSL {h(url)}/repo-key.gpg \\
|
|
| sudo gpg --dearmor -o /usr/share/keyrings/{h(package)}.gpg
|
|
|
|
echo "deb [signed-by=/usr/share/keyrings/{h(package)}.gpg] {h(url)}/apt {h(dist)} {h(component)}" \\
|
|
| sudo tee /etc/apt/sources.list.d/{h(package)}.list
|
|
|
|
sudo apt update
|
|
sudo apt install {h(package)}</code></pre>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>RHEL / Rocky / Alma / Fedora</h2>
|
|
<pre><code>sudo rpm --import {h(url)}/repo-key.gpg
|
|
|
|
sudo tee /etc/yum.repos.d/{h(package)}.repo <<'REPO'
|
|
[{h(package)}]
|
|
name={h(package)} Repository
|
|
baseurl={h(url)}/rpm/$basearch
|
|
enabled=1
|
|
gpgcheck=1
|
|
repo_gpgcheck=1
|
|
gpgkey={h(url)}/repo-key.gpg
|
|
REPO
|
|
|
|
sudo dnf install {h(package)}</code></pre>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>Docker discovery agent — separate Linux package</h2>
|
|
<p>Install <code>rustproxy-docker-agent</code> on the Docker host (systemd, Docker Engine, amd64/x86_64). This is independent from the RustProxy server and has no FreeBSD pkg.</p>
|
|
<pre><code># Debian / Ubuntu (after adding the signed APT repo above)
|
|
sudo apt install rustproxy-docker-agent
|
|
|
|
# RHEL / Rocky / Alma / Fedora (after adding the DNF repo above)
|
|
sudo dnf install rustproxy-docker-agent
|
|
|
|
# Locally display the token and certificate fingerprint
|
|
sudo rustproxy-docker-agent info --show-token
|
|
sudo systemctl status rustproxy-docker-agent</code></pre>
|
|
<p>Packages create persistent credentials and a systemd service; tokens are never printed to unattended package logs. Restrict the agent's HTTPS port to the RustProxy host.</p>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>OPNsense / FreeBSD pkg</h2>
|
|
<p>The OPNsense plugin is published separately because it uses the FreeBSD pkg format.</p>
|
|
<p><a href="{h(opn_url)}/">{h(opn_url)}/</a></p>
|
|
<p>Native FreeBSD pkg (if enabled): <a href="{h(opn_url)}/freebsd/">{h(opn_url)}/freebsd/</a>.</p>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>Repository files</h2>
|
|
<ul>
|
|
<li><a href="{h(url)}/repo-key.gpg">Public GPG key</a></li>
|
|
<li><a href="{h(url)}/apt/dists/{h(dist)}/InRelease">APT InRelease</a></li>
|
|
<li><a href="{h(url)}/rpm/x86_64/repodata/repomd.xml">RPM repomd.xml</a></li>
|
|
</ul>
|
|
<p>Supported targets: Debian 12/13, Ubuntu 24.04/26.04, RHEL 9/10; architecture: amd64/x86_64.</p>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
'''
|
|
with open(out, 'w', encoding='utf-8') as f:
|
|
f.write(content)
|
|
PY_END |