This commit is contained in:
130
README.md
130
README.md
@@ -1,2 +1,130 @@
|
||||
# patchpinglite
|
||||
# ReleaseWatcher
|
||||
|
||||
ReleaseWatcher ist eine webbasierte Go-Anwendung zur Pflege und Veröffentlichung von Software-Releases.
|
||||
|
||||
## Funktionen
|
||||
|
||||
- Hersteller, Software und Release-Historie verwalten
|
||||
- Release-Felder: Software, Version, Channel, Architektur, Release-Datum, Download-Link, Release-Link, Informationen
|
||||
- Schwachstellen je Release im Format `CVE | Schweregrad | Beschreibung | Referenz`
|
||||
- Rollenmodell:
|
||||
- `admin`: Releases erstellen, Benutzer anlegen, Audit-Log ansehen
|
||||
- `employee`: Hersteller- und Softwaredaten pflegen, Releases ansehen
|
||||
- HMAC-signierte Session-Cookies
|
||||
- Passwort-Hashing mit PBKDF2-SHA256 ohne externe Abhängigkeiten
|
||||
- JSON-Dateipersistenz mit atomarem Schreiben
|
||||
- Audit-Log
|
||||
- Discord-Bot-Integration:
|
||||
- DMs per `/subscribe` und `/unsubscribe`
|
||||
- automatische Software-Kanäle pro Software
|
||||
- Release-Pings in den passenden Software-Kanal
|
||||
|
||||
## Start
|
||||
|
||||
```bash
|
||||
go mod tidy
|
||||
go run ./cmd/releasewatcher
|
||||
```
|
||||
|
||||
Danach im Browser öffnen:
|
||||
|
||||
```text
|
||||
http://localhost:8080
|
||||
```
|
||||
|
||||
Standard-Admin:
|
||||
|
||||
```text
|
||||
E-Mail: admin@example.local
|
||||
Passwort: admin12345
|
||||
```
|
||||
|
||||
## Produktion
|
||||
|
||||
Setze mindestens diese Variablen:
|
||||
|
||||
```bash
|
||||
export RW_SECRET='lange-zufaellige-session-secret'
|
||||
export RW_ADMIN_EMAIL='admin@firma.example'
|
||||
export RW_ADMIN_PASSWORD='langes-sicheres-passwort'
|
||||
export RW_ADDR=':8080'
|
||||
export RW_DATA='data/releasewatcher.json'
|
||||
```
|
||||
|
||||
Baue und starte:
|
||||
|
||||
```bash
|
||||
go mod tidy
|
||||
go build -o releasewatcher ./cmd/releasewatcher
|
||||
./releasewatcher
|
||||
```
|
||||
|
||||
Empfehlung: Hinter einem Reverse Proxy mit HTTPS betreiben. In `internal/auth/auth.go` kann `Secure: true` für Cookies aktiviert werden, sobald HTTPS erzwungen ist.
|
||||
|
||||
## Discord-Integration
|
||||
|
||||
Die Integration liegt in:
|
||||
|
||||
```text
|
||||
internal/discordbot/bot.go
|
||||
```
|
||||
|
||||
Aktivierung über Umgebungsvariablen:
|
||||
|
||||
```bash
|
||||
export RW_DISCORD_TOKEN='dein-bot-token'
|
||||
export RW_DISCORD_APP_ID='deine-discord-application-id'
|
||||
export RW_DISCORD_GUILD_ID='deine-server-id'
|
||||
export RW_DISCORD_CATEGORY_NAME='Software Releases'
|
||||
# optional, wenn die Kategorie schon existiert und explizit genutzt werden soll:
|
||||
# export RW_DISCORD_CATEGORY_ID='deine-kategorie-id'
|
||||
# optionaler Ping-Text; Standard ist @here
|
||||
export RW_DISCORD_RELEASE_MENTION='@here'
|
||||
# optional DMs deaktivieren, Kanäle bleiben aktiv:
|
||||
# export RW_DISCORD_SEND_DMS='false'
|
||||
|
||||
go run ./cmd/releasewatcher
|
||||
```
|
||||
|
||||
Wenn `RW_DISCORD_TOKEN` gesetzt ist, startet die Webapp zusätzlich die Discord-Session. Wenn `RW_DISCORD_APP_ID` gesetzt ist, werden diese Commands registriert:
|
||||
|
||||
- `/subscribe`: Nutzer trägt sich selbst als DM-Empfänger ein
|
||||
- `/unsubscribe`: Nutzer trägt sich aus
|
||||
- User-Command `Zu Empfängern hinzufügen`: Nutzer mit Manage-Guild-Recht kann andere Empfänger hinzufügen
|
||||
|
||||
### Automatische Software-Kanäle
|
||||
|
||||
Wenn zusätzlich `RW_DISCORD_GUILD_ID` gesetzt ist, erstellt der Bot beim Anlegen einer Software automatisch einen Textkanal unter der konfigurierten Kategorie.
|
||||
|
||||
Das Kanalformat ist:
|
||||
|
||||
```text
|
||||
hersteller-software
|
||||
```
|
||||
|
||||
Beispiele:
|
||||
|
||||
```text
|
||||
microsoft-edge
|
||||
mozilla-firefox
|
||||
adobe-acrobat-reader
|
||||
```
|
||||
|
||||
Die erzeugte Discord-Channel-ID wird direkt am Software-Datensatz gespeichert (`discord_channel_id`). Beim Erstellen eines Releases postet der Bot dann einen Embed in genau diesen Kanal. Zusätzlich werden weiterhin DMs an Subscriber versendet, außer `RW_DISCORD_SEND_DMS=false` ist gesetzt.
|
||||
|
||||
Der Bot benötigt auf dem Discord-Server mindestens diese Rechte:
|
||||
|
||||
- `Manage Channels`, wenn Kategorien oder Kanäle automatisch erstellt werden sollen
|
||||
- `Send Messages`
|
||||
- `Embed Links`
|
||||
- optional `Mention @everyone, @here, and All Roles`, wenn `RW_DISCORD_RELEASE_MENTION='@here'` oder Rollen-Mentions genutzt werden
|
||||
|
||||
## Datenhaltung
|
||||
|
||||
Die Anwendung speichert Daten standardmäßig in:
|
||||
|
||||
```text
|
||||
data/releasewatcher.json
|
||||
```
|
||||
|
||||
Für größere Installationen wäre der nächste professionelle Schritt ein Wechsel auf PostgreSQL oder SQLite mit Migrationen. Die Store-Schicht ist dafür bewusst gekapselt.
|
||||
|
||||
Reference in New Issue
Block a user