.PHONY: all backend agent agent-linux updater plugin clean certs deploy-backend deploy-agent BACKEND_BIN = build/rmm-backend AGENT_BIN = build/rmm-agent AGENT_LINUX_BIN = build/rmm-agent-linux UPDATER_BIN = build/rmm-updater BACKEND_HOST = 192.168.85.13 AGENT_HOST = 192.168.85.33 SSH_USER = root all: backend agent agent-linux 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" agent-linux: @echo "==> Building Agent Linux (linux/amd64)..." cd agent-linux && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-X main.Version=$(VERSION)" -o ../$(AGENT_LINUX_BIN) . @echo "==> $(AGENT_LINUX_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"