feat: user roles - admins and users limited to the machines given to them, user editor with machines, password sign-in and its lock; direct address without Cloudflare as the agents' fallback and in the installer; version 0.1.2

This commit is contained in:
redtea committed 2026-10-15 10:56:19 +03:00
1 parent 36dc12b69d
commit 021da93229
29 files changed
+844 -97

No files matched your search

+19
View File
@@ -3,6 +3,7 @@ package server
import (
"crypto/rand"
"encoding/hex"
"net/url"
"strconv"
lpra "github.com/x-grk/longpolling-remote-access"
@@ -18,6 +19,7 @@ const (
cfgUfwEnabled = "ufw_enabled"
cfgTunnelHost = "tunnel_host"
cfgTunnelPort = "tunnel_port"
cfgDirectAddr = "direct_address"
)
// DefaultHostAddress is the public URL agents dial by default. It is baked into
@@ -68,6 +70,23 @@ func (db *DB) HostAddress() string {
return v
}
// DirectAddress is the server's direct URL, one that is not behind a proxy
// like Cloudflare: the agents' fallback, and a way to install when the main
// address is out of reach. Empty when not set.
func (db *DB) DirectAddress() string {
v, _ := db.GetConfig(cfgDirectAddr)
return v
}
// directHost is the direct address's host name, without scheme and port.
func directHost(addr string) string {
u, err := url.Parse(addr)
if err != nil {
return ""
}
return u.Hostname()
}
func (db *DB) EnrollSecret() string {
v, _ := db.GetConfig(cfgEnrollSecret)
return v