Updater: - Separater Go-Daemon (rmm-updater) als eigener rc.d Service - Pollt alle 60s: Firmware vorhanden + Hash unterschiedlich + Flag gesetzt - Download -> SHA256 Verify -> Agent Stop -> Replace -> Agent Start - Automatisches Rollback bei Fehler - Deployed und getestet auf allen 3 Firewalls (.1, .19, .33) Backend: - Firmware-DB multi-plattform (freebsd/linux/windows) - update_requested Flag pro Agent in agents Tabelle - Heartbeat-Response liefert update_available wenn Flag gesetzt - Neue Endpoints: request-update, request-update-all, firmware/download - Auth: JWT + CombinedAuth Middleware (API-Key OR JWT) - Customers CRUD + Agent-Zuordnung - Users CRUD + Passwort-Aenderung Frontend: - Firmware-Seite: Multi-Plattform Upload, Agent-Liste mit Update-Trigger - Agent-Tab im AgentPanel: Update-Button, nuetzliche Befehle, Agent-Info - Zertifikate-Tab redesigned: Karten-Layout mit Restlaufzeit und Farbbalken - Sidebar: Firmware-Eintrag hinzugefuegt Plugin: - install.sh erweitert: Installiert Agent + Updater + rc.d Services - rmm_updater rc.d Service README: - Architektur-Diagramm erweitert (Frontend + Updater) - Auth, Customers, Users, Firmware API dokumentiert - Updater-Flow dokumentiert - Frontend-Seiten und Deploy beschrieben - DB-Schema aktualisiert (neue Tabellen) - Dateistruktur erweitert (updater/, frontend/, firmware.go, auth.go)
97 lines
3.1 KiB
Makefile
97 lines
3.1 KiB
Makefile
.PHONY: all backend agent updater plugin clean certs deploy-backend deploy-agent
|
|
|
|
BACKEND_BIN = build/rmm-backend
|
|
AGENT_BIN = build/rmm-agent
|
|
UPDATER_BIN = build/rmm-updater
|
|
|
|
BACKEND_HOST = 192.168.85.13
|
|
AGENT_HOST = 192.168.85.33
|
|
SSH_USER = root
|
|
|
|
all: backend agent updater
|
|
|
|
backend:
|
|
@echo "==> Building Backend (linux/amd64)..."
|
|
cd backend && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ../$(BACKEND_BIN) .
|
|
@echo "==> $(BACKEND_BIN) erstellt"
|
|
|
|
agent:
|
|
@echo "==> Building Agent (freebsd/amd64)..."
|
|
cd agent && GOOS=freebsd GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-X main.Version=$(VERSION)" -o ../$(AGENT_BIN) .
|
|
@echo "==> $(AGENT_BIN) erstellt"
|
|
|
|
updater:
|
|
@echo "==> Building Updater (freebsd/amd64)..."
|
|
cd updater && GOOS=freebsd GOARCH=amd64 CGO_ENABLED=0 go build -o ../$(UPDATER_BIN) .
|
|
@echo "==> $(UPDATER_BIN) erstellt"
|
|
|
|
plugin:
|
|
@echo "==> Building OPNsense Plugin Package..."
|
|
cd opnsense-plugin && ./build.sh $(VERSION)
|
|
@echo "==> Plugin Package erstellt in opnsense-plugin/"
|
|
|
|
clean:
|
|
rm -rf build/ opnsense-plugin/stage/
|
|
|
|
certs:
|
|
@echo "==> Generiere self-signed TLS-Zertifikate..."
|
|
mkdir -p certs
|
|
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
|
|
-keyout certs/server.key -out certs/server.crt \
|
|
-days 3650 -nodes \
|
|
-subj "/CN=rmm-backend/O=RMM" \
|
|
-addext "subjectAltName=IP:192.168.85.13,IP:127.0.0.1,DNS:localhost"
|
|
@echo "==> Zertifikate in certs/ erstellt"
|
|
|
|
deploy-backend: backend
|
|
@echo "==> Deploying Backend to $(BACKEND_HOST)..."
|
|
ssh $(SSH_USER)@$(BACKEND_HOST) "mkdir -p /opt/rmm/certs"
|
|
scp $(BACKEND_BIN) $(SSH_USER)@$(BACKEND_HOST):/opt/rmm/rmm-backend
|
|
scp backend/config.yaml $(SSH_USER)@$(BACKEND_HOST):/opt/rmm/config.yaml
|
|
@echo "==> Erstelle systemd Service..."
|
|
ssh $(SSH_USER)@$(BACKEND_HOST) 'cat > /etc/systemd/system/rmm-backend.service << EOF\n\
|
|
[Unit]\n\
|
|
Description=RMM Backend\n\
|
|
After=network.target\n\
|
|
\n\
|
|
[Service]\n\
|
|
Type=simple\n\
|
|
WorkingDirectory=/opt/rmm\n\
|
|
ExecStart=/opt/rmm/rmm-backend /opt/rmm/config.yaml\n\
|
|
Restart=always\n\
|
|
RestartSec=5\n\
|
|
\n\
|
|
[Install]\n\
|
|
WantedBy=multi-user.target\n\
|
|
EOF'
|
|
ssh $(SSH_USER)@$(BACKEND_HOST) "systemctl daemon-reload && systemctl enable rmm-backend && systemctl restart rmm-backend"
|
|
@echo "==> Backend deployed und gestartet"
|
|
|
|
deploy-agent: agent
|
|
@echo "==> Deploying Agent to $(AGENT_HOST)..."
|
|
ssh $(SSH_USER)@$(AGENT_HOST) "mkdir -p /opt/rmm"
|
|
scp $(AGENT_BIN) $(SSH_USER)@$(AGENT_HOST):/opt/rmm/rmm-agent
|
|
scp agent/config.yaml $(SSH_USER)@$(AGENT_HOST):/opt/rmm/config.yaml
|
|
@echo "==> Erstelle rc.d Script..."
|
|
ssh $(SSH_USER)@$(AGENT_HOST) 'cat > /usr/local/etc/rc.d/rmm_agent << RCEOF\n\
|
|
#!/bin/sh\n\
|
|
#\n\
|
|
# PROVIDE: rmm_agent\n\
|
|
# REQUIRE: NETWORKING\n\
|
|
# KEYWORD: shutdown\n\
|
|
\n\
|
|
. /etc/rc.subr\n\
|
|
\n\
|
|
name="rmm_agent"\n\
|
|
rcvar="rmm_agent_enable"\n\
|
|
pidfile="/var/run/$${name}.pid"\n\
|
|
command="/opt/rmm/rmm-agent"\n\
|
|
command_args="--config /opt/rmm/config.yaml --insecure &"\n\
|
|
\n\
|
|
load_rc_config $$name\n\
|
|
run_rc_command "$$1"\n\
|
|
RCEOF\n\
|
|
chmod +x /usr/local/etc/rc.d/rmm_agent'
|
|
ssh $(SSH_USER)@$(AGENT_HOST) 'sysrc rmm_agent_enable="YES" && service rmm_agent restart'
|
|
@echo "==> Agent deployed und gestartet"
|