Fold init-only VNC and SSH setters into Config-struct constructors

This commit is contained in:
Viktor Liu
2026-05-22 13:32:25 +02:00
parent f00b34f3a7
commit 8ca5c2f4b4
7 changed files with 116 additions and 113 deletions
+5 -9
View File
@@ -237,22 +237,18 @@ func (e *Engine) startSSHServer(jwtConfig *sshserver.JWTConfig) error {
return errors.New("wg interface not initialized")
}
wgAddr := e.wgInterface.Address()
serverConfig := &sshserver.Config{
HostKeyPEM: e.config.SSHKey,
JWT: jwtConfig,
HostKeyPEM: e.config.SSHKey,
JWT: jwtConfig,
NetstackNet: e.wgInterface.GetNet(),
NetworkValidation: wgAddr,
}
server := sshserver.New(serverConfig)
wgAddr := e.wgInterface.Address()
server.SetNetworkValidation(wgAddr)
netbirdIP := wgAddr.IP
listenAddr := netip.AddrPortFrom(netbirdIP, sshserver.InternalSSHPort)
if netstackNet := e.wgInterface.GetNet(); netstackNet != nil {
server.SetNetstackNet(netstackNet)
}
e.configureSSHServer(server)
if err := server.Start(e.ctx, listenAddr); err != nil {
+13 -9
View File
@@ -99,9 +99,9 @@ func (e *Engine) startVNCServer() error {
netbirdIP := e.wgInterface.Address().IP
srv := vncserver.New(capturer, injector, e.config.WgPrivateKey[:])
var sessionRecorder func(vncserver.SessionTick)
if e.clientMetrics != nil {
srv.SetSessionRecorder(func(t vncserver.SessionTick) {
sessionRecorder = func(t vncserver.SessionTick) {
e.clientMetrics.RecordVNCSessionTick(e.ctx, metrics.VNCSessionTick{
Period: t.Period,
BytesOut: t.BytesOut,
@@ -112,16 +112,20 @@ func (e *Engine) startVNCServer() error {
MaxWriteBytes: t.MaxWriteBytes,
WriteNanos: t.WriteNanos,
})
})
}
}
if vncNeedsServiceMode() {
serviceMode := vncNeedsServiceMode()
if serviceMode {
log.Info("VNC: running in Session 0, enabling service mode (agent proxy)")
srv.SetServiceMode(true)
}
if netstackNet := e.wgInterface.GetNet(); netstackNet != nil {
srv.SetNetstackNet(netstackNet)
}
srv := vncserver.New(vncserver.Config{
Capturer: capturer,
Injector: injector,
IdentityKey: e.config.WgPrivateKey[:],
ServiceMode: serviceMode,
SessionRecorder: sessionRecorder,
NetstackNet: e.wgInterface.GetNet(),
})
listenAddr := netip.AddrPortFrom(netbirdIP, vncInternalPort)
network := e.wgInterface.Address().Network