103 lines
5.2 KiB
HTML
103 lines
5.2 KiB
HTML
{{define "packages.html"}}
|
|
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>{{.Title}} · TAPM</title>
|
|
<link rel="icon" type="image/svg+xml" href="/static/ta-mark.svg">
|
|
<link rel="stylesheet" href="/static/app.css">
|
|
<script src="/static/app.js" defer></script>
|
|
</head>
|
|
<body>
|
|
{{template "topbar" .}}
|
|
|
|
<main class="page">
|
|
{{if .Notice}}<div class="notice">{{.Notice}}</div>{{end}}
|
|
|
|
<section class="view-heading">
|
|
<div>
|
|
<p class="eyebrow">Registry catalog</p>
|
|
<h1>Protected packages.</h1>
|
|
<p>Add installers or replace the current version while keeping a stable package ID.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<div class="package-layout">
|
|
<div class="package-table">
|
|
<p class="form-title">Current catalog</p>
|
|
{{range .Packages}}
|
|
<div class="package-row">
|
|
<div>
|
|
<strong>{{.DisplayName}}</strong>
|
|
<small>{{.Slug}} · {{.PackageVersion}}</small>
|
|
</div>
|
|
<span class="status {{if .Enabled}}enabled{{end}}">{{if .Enabled}}Enabled{{else}}Disabled{{end}}</span>
|
|
</div>
|
|
{{else}}
|
|
<p class="empty">No protected packages have been added.</p>
|
|
{{end}}
|
|
</div>
|
|
|
|
<div class="package-forms">
|
|
{{if .Packages}}
|
|
<form action="/portal/packages/upload" method="post" enctype="multipart/form-data" class="stack compact" data-upload-form>
|
|
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
|
|
<input type="hidden" name="mode" value="update">
|
|
<p class="form-title">Update a package</p>
|
|
<label>Package
|
|
<select name="slug" required data-package-select>
|
|
{{range .Packages}}
|
|
<option value="{{.Slug}}" data-enabled="{{.Enabled}}">{{.DisplayName}} ({{.Slug}} · {{.PackageVersion}})</option>
|
|
{{end}}
|
|
</select>
|
|
</label>
|
|
<label>New version <input name="package_version" placeholder="26.2.0.10" required></label>
|
|
<label class="toggle"><input type="checkbox" name="enabled" value="1" data-package-enabled> Available for distribution</label>
|
|
<label>Replacement installer <input name="package_file" type="file" required></label>
|
|
<p class="form-help">Replace the installer and version, or save only its distribution status. Disabling takes effect immediately but keeps the package and its authorization selections intact.</p>
|
|
<div class="package-update-actions">
|
|
<button class="button primary" type="submit">Replace current package</button>
|
|
<button class="button secondary" type="submit"
|
|
formaction="/portal/packages/status" formnovalidate
|
|
data-package-status>Save status only</button>
|
|
</div>
|
|
<p class="upload-status" data-upload-status aria-live="polite"></p>
|
|
</form>
|
|
{{end}}
|
|
|
|
<form action="/portal/packages/upload" method="post" enctype="multipart/form-data" class="stack compact form-section" data-upload-form>
|
|
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
|
|
<input type="hidden" name="mode" value="create">
|
|
<p class="form-title">Add a protected package</p>
|
|
<label>Package ID <input name="slug" placeholder="sentinelone-linux" pattern="[a-z0-9_-]+" required></label>
|
|
<label>Display name <input name="display_name" placeholder="SentinelOne Linux Agent" required></label>
|
|
<label>Version <input name="package_version" placeholder="26.2.0.10" required></label>
|
|
<label class="toggle"><input type="checkbox" name="enabled" value="1" checked> Enable after upload</label>
|
|
<label>Installer file <input name="package_file" type="file" required></label>
|
|
<button class="button secondary" type="submit">Upload new package</button>
|
|
<p class="upload-status" data-upload-status aria-live="polite"></p>
|
|
</form>
|
|
|
|
<details class="manual-metadata">
|
|
<summary>Register package metadata manually</summary>
|
|
<form action="/portal/packages" method="post" class="stack compact">
|
|
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
|
|
<label>Package ID <input name="slug" placeholder="sentinelone-linux" pattern="[a-z0-9_-]+" required></label>
|
|
<label>Display name <input name="display_name" placeholder="SentinelOne Linux Agent" required></label>
|
|
<label>Version <input name="package_version" placeholder="26.1.1.31" required></label>
|
|
<label>Filename <input name="file_name" placeholder="SentinelAgent_linux_x86_64.deb" required></label>
|
|
<label>SHA-256 <input name="sha256" minlength="64" maxlength="64" placeholder="64 hexadecimal characters" required></label>
|
|
<label class="toggle"><input type="checkbox" name="enabled" value="1"> Enable for new authorizations</label>
|
|
<button class="button secondary" type="submit">Save package metadata</button>
|
|
</form>
|
|
</details>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html>
|
|
{{end}}
|