fix: toggle viewer_port directly instead of viewer.enabled — no ambiguity

This commit is contained in:
Claus Lohmar 2026-08-06 19:12:10 +01:00
parent c85bba8d56
commit deb2380507
2 changed files with 8 additions and 6 deletions

11
main.go
View file

@ -89,14 +89,15 @@ func main() {
liveCfg := *app.server.appConfig // copy, not pointer
app.server.mu.RUnlock()
// Handle viewer server toggle.
if liveCfg.Auth.Viewer.Enabled && app.viewerSrv == nil {
// Handle viewer server toggle via viewer_port.
viewerOn := liveCfg.Server.ViewerPort != "" && liveCfg.Server.ViewerPort != ":0"
if viewerOn && app.viewerSrv == nil {
go func() {
v, err := app.server.StartViewerServer()
if err != nil { log.Printf("Viewer server: %v", err) }
app.viewerSrv = v
}()
} else if !liveCfg.Auth.Viewer.Enabled && app.viewerSrv != nil {
} else if !viewerOn && app.viewerSrv != nil {
log.Println("Stopping viewer server...")
app.viewerSrv.Close()
app.viewerSrv = nil
@ -119,7 +120,7 @@ func main() {
}()
// Start viewer server only if enabled.
if cfg.Auth.Viewer.Enabled {
if cfg.Server.ViewerPort != "" && cfg.Server.ViewerPort != ":0" {
go func() {
v, err := app.server.StartViewerServer()
if err != nil {
@ -128,7 +129,7 @@ func main() {
app.viewerSrv = v
}()
} else {
log.Println("Viewer server: disabled in config")
log.Println("Viewer server: disabled (viewer_port empty)")
}
select {

View file

@ -277,7 +277,7 @@ async function renderCameraCards() {
<label>Username <input type="text" value="${escAttr(config?.auth?.viewer?.username || '')}" data-auth="viewer-user"></label>
<label>Password <input type="password" placeholder="new password" data-auth="viewer-pass"></label>
<div class="row" style="margin-top:8px">
<label>Enable local view access <input type="checkbox" id="viewer-enable" ${config?.auth?.viewer?.enabled ? 'checked' : ''} style="width:auto"></label>
<label>Enable local view access <input type="checkbox" id="viewer-enable" ${config?.server?.viewer_port ? 'checked' : ''} style="width:auto"></label>
</div>
</div>
</div>
@ -432,6 +432,7 @@ document.getElementById('btn-save').addEventListener('click', async () => {
cfg.auth.master.username = masterUser;
cfg.auth.viewer.username = viewerUser;
cfg.auth.viewer.enabled = viewerEnabled || false;
cfg.server.viewer_port = viewerEnabled ? ":8090" : "";
if (masterPass) { cfg.auth.master.password = masterPass; cfg.auth.master.enabled = true; }
if (viewerPass) { cfg.auth.viewer.password = viewerPass; }