diff --git a/README.md b/README.md index 8294b01..f811efd 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Ein moderner Wake-on-LAN Manager, entwickelt mit Go und einer schönen Web-Oberf ## Features -- **PC-Verwaltung**: Hinzufügen, Anzeigen und Löschen von PC-Einträgen +- **PC-Verwaltung**: Hinzufügen, Anzeigen, Bearbeiten und Löschen von PC-Einträgen - **Wake-on-LAN**: Ein-Klick-Aufwecken von Computern über MAC-Adressen - **Moderne Web-Oberfläche**: Responsive Design mit Bootstrap und FontAwesome - **SQLite-Datenbank**: Einfache lokale Datenspeicherung @@ -19,7 +19,7 @@ Ein moderner Wake-on-LAN Manager, entwickelt mit Go und einer schönen Web-Oberf 1. **Repository klonen:** ```bash - git clone + git clone https://gitea.medisoftware.org/Markus/medi-wol.git cd medi-wol ``` @@ -45,6 +45,11 @@ Ein moderner Wake-on-LAN Manager, entwickelt mit Go und einer schönen Web-Oberf 2. Geben Sie die MAC-Adresse im Format `XX:XX:XX:XX:XX:XX` ein 3. Klicken Sie auf "PC hinzufügen" +### PC bearbeiten +1. Klicken Sie auf den "Bearbeiten"-Button neben dem gewünschten PC +2. Ändern Sie Name und/oder MAC-Adresse +3. Klicken Sie auf "Speichern" + ### PC aufwecken - Klicken Sie auf den "Aufwecken"-Button neben dem gewünschten PC - Das System sendet automatisch ein Wake-on-LAN Paket @@ -53,6 +58,109 @@ Ein moderner Wake-on-LAN Manager, entwickelt mit Go und einer schönen Web-Oberf - Klicken Sie auf den "Löschen"-Button neben dem gewünschten PC - Bestätigen Sie die Löschung +## Build-Anweisungen + +### Windows Build + +#### Lokaler Build (Windows) +```bash +# Einfacher Build +go build -o medi-wol.exe cmd/server/main.go + +# Build mit Optimierungen +go build -ldflags="-s -w" -o medi-wol.exe cmd/server/main.go + +# Build für Release +go build -ldflags="-s -w -X main.version=1.0.0" -o medi-wol.exe cmd/server/main.go +``` + +#### Cross-Compilation von Windows für Linux +```bash +# Für Linux AMD64 +set GOOS=linux +set GOARCH=amd64 +go build -o medi-wol-linux-amd64 cmd/server/main.go + +# Für Linux ARM64 (Raspberry Pi, etc.) +set GOOS=linux +set GOARCH=arm64 +go build -o medi-wol-linux-arm64 cmd/server/main.go + +# Zurücksetzen auf Windows +set GOOS=windows +set GOARCH=amd64 +``` + +### Linux Build + +#### Lokaler Build (Linux) +```bash +# Einfacher Build +go build -o medi-wol cmd/server/main.go + +# Build mit Optimierungen +go build -ldflags="-s -w" -o medi-wol cmd/server/main.go + +# Build für Release +go build -ldflags="-s -w -X main.version=1.0.0" -o medi-wol cmd/server/main.go +``` + +#### Cross-Compilation von Linux für Windows +```bash +# Für Windows AMD64 +GOOS=windows GOARCH=amd64 go build -o medi-wol-windows-amd64.exe cmd/server/main.go + +# Für Windows ARM64 +GOOS=windows GOARCH=arm64 go build -o medi-wol-windows-arm64.exe cmd/server/main.go +``` + +### Build-Flags Erklärung + +- `-ldflags="-s -w"`: Reduziert die Binary-Größe durch Entfernung von Debug-Informationen +- `-X main.version=1.0.0`: Setzt eine Version-Variable zur Laufzeit +- `-o filename`: Bestimmt den Ausgabedateinamen + +### Build-Skripte + +#### Windows Build-Skript (`build.bat`) +```batch +@echo off +echo Building Medi-WOL for multiple platforms... + +echo Building for Windows AMD64... +go build -ldflags="-s -w" -o dist/medi-wol-windows-amd64.exe cmd/server/main.go + +echo Building for Linux AMD64... +set GOOS=linux +set GOARCH=amd64 +go build -ldflags="-s -w" -o dist/medi-wol-linux-amd64 cmd/server/main.go + +echo Building for Linux ARM64... +set GOOS=linux +set GOARCH=arm64 +go build -ldflags="-s -w" -o dist/medi-wol-linux-arm64 cmd/server/main.go + +echo Build complete! +pause +``` + +#### Linux Build-Skript (`build.sh`) +```bash +#!/bin/bash +echo "Building Medi-WOL for multiple platforms..." + +echo "Building for Linux AMD64..." +go build -ldflags="-s -w" -o dist/medi-wol-linux-amd64 cmd/server/main.go + +echo "Building for Linux ARM64..." +GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o dist/medi-wol-linux-arm64 cmd/server/main.go + +echo "Building for Windows AMD64..." +GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o dist/medi-wol-windows-amd64.exe cmd/server/main.go + +echo "Build complete!" +``` + ## Projektstruktur ``` @@ -67,6 +175,8 @@ medi-wol/ │ ├── static/ # CSS, JavaScript │ └── templates/ # HTML-Templates ├── go.mod # Go-Module +├── build.bat # Windows Build-Skript +├── build.sh # Linux Build-Skript └── README.md # Diese Datei ``` @@ -75,6 +185,7 @@ medi-wol/ - `GET /` - Hauptseite - `GET /api/pcs` - Alle PCs abrufen - `POST /api/pcs` - Neuen PC erstellen +- `PUT /api/pcs/:id` - PC aktualisieren - `DELETE /api/pcs/:id` - PC löschen - `POST /api/pcs/:id/wake` - PC aufwecken @@ -99,7 +210,11 @@ go run cmd/server/main.go ### Build für Produktion ```bash -go build -o medi-wol cmd/server/main.go +# Windows +go build -ldflags="-s -w" -o medi-wol.exe cmd/server/main.go + +# Linux +go build -ldflags="-s -w" -o medi-wol cmd/server/main.go ``` ### Tests ausführen @@ -107,6 +222,47 @@ go build -o medi-wol cmd/server/main.go go test ./... ``` +### Code-Qualität prüfen +```bash +# Code formatieren +go fmt ./... + +# Linting (falls golint installiert ist) +golint ./... + +# Vet prüfen +go vet ./... +``` + +## Deployment + +### Windows Service +```bash +# Mit NSSM (Non-Sucking Service Manager) +nssm install Medi-WOL "C:\path\to\medi-wol.exe" +nssm set Medi-WOL AppDirectory "C:\path\to\medi-wol" +nssm start Medi-WOL +``` + +### Linux Systemd Service +```ini +# /etc/systemd/system/medi-wol.service +[Unit] +Description=Medi-WOL Wake-on-LAN Manager +After=network.target + +[Service] +Type=simple +User=medi-wol +WorkingDirectory=/opt/medi-wol +ExecStart=/opt/medi-wol/medi-wol +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target +``` + ## Lizenz Dieses Projekt ist für den internen Gebrauch bestimmt. diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..50458f6 --- /dev/null +++ b/build.bat @@ -0,0 +1,33 @@ +@echo off +echo Building Medi-WOL for multiple platforms... + +REM Erstelle dist-Verzeichnis +if not exist dist mkdir dist + +echo Building for Windows AMD64... +go build -ldflags="-s -w" -o dist/medi-wol-windows-amd64.exe cmd/server/main.go + +echo Building for Linux AMD64... +set GOOS=linux +set GOARCH=amd64 +go build -ldflags="-s -w" -o dist/medi-wol-linux-amd64 cmd/server/main.go + +echo Building for Linux ARM64... +set GOOS=linux +set GOARCH=arm64 +go build -ldflags="-s -w" -o dist/medi-wol-linux-arm64 cmd/server/main.go + +echo Building for Windows ARM64... +set GOOS=windows +set GOARCH=arm64 +go build -ldflags="-s -w" -o dist/medi-wol-windows-arm64.exe cmd/server/main.go + +REM Zurücksetzen auf Windows AMD64 +set GOOS=windows +set GOARCH=amd64 + +echo. +echo Build complete! Binaries created in dist/ folder: +dir dist +echo. +pause diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..1870a53 --- /dev/null +++ b/build.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +echo "Building Medi-WOL for multiple platforms..." + +# Erstelle dist-Verzeichnis +mkdir -p dist + +echo "Building for Linux AMD64..." +go build -ldflags="-s -w" -o dist/medi-wol-linux-amd64 cmd/server/main.go + +echo "Building for Linux ARM64..." +GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o dist/medi-wol-linux-arm64 cmd/server/main.go + +echo "Building for Windows AMD64..." +GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o dist/medi-wol-windows-amd64.exe cmd/server/main.go + +echo "Building for Windows ARM64..." +GOOS=windows GOARCH=arm64 go build -ldflags="-s -w" -o dist/medi-wol-windows-arm64.exe cmd/server/main.go + +echo "" +echo "Build complete! Binaries created in dist/ folder:" +ls -la dist/ +echo "" diff --git a/dist/medi-wol-linux-amd64 b/dist/medi-wol-linux-amd64 new file mode 100644 index 0000000..7a4c50d Binary files /dev/null and b/dist/medi-wol-linux-amd64 differ diff --git a/dist/medi-wol-linux-arm64 b/dist/medi-wol-linux-arm64 new file mode 100644 index 0000000..477ab9c Binary files /dev/null and b/dist/medi-wol-linux-arm64 differ