diff --git a/Makefile b/Makefile index bda899c..8eb2a63 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all frontend backend backend-debug release catools test bench race lint clean run +.PHONY: all frontend backend backend-debug backend-pam release catools test bench race lint clean run # --------------------------------------------------------------------------- # # Sources — adding any file here triggers a frontend or backend rebuild # @@ -51,6 +51,14 @@ $(CATOOLS): $(GO_SRCS) @mkdir -p dist CGO_ENABLED=0 go build -ldflags="-s -w" -o $(CATOOLS) ./cmd/catools +# PAM-enabled binary: adds built-in HTTP Basic authentication validated against +# the host PAM stack (server.basic_auth). Requires cgo + libpam (-dev headers), +# so the resulting binary is NOT fully static — use only when basic_auth is needed. +backend-pam: $(FRONTEND_OUT) + @mkdir -p dist + CGO_ENABLED=1 go build -tags pam -ldflags="-s -w" -o $(BINARY) ./cmd/uopi + CGO_ENABLED=0 go build -ldflags="-s -w" -o $(CATOOLS) ./cmd/catools + # Unstripped binary for debugging (pure-Go CA, CGO_ENABLED=0) backend-debug: $(FRONTEND_OUT) @mkdir -p dist diff --git a/TODO.md b/TODO.md index 94da58f..8b91265 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,8 @@ # TODO +- **BUG FIX**: + - [x] connecting from firefox always get default user — native SPNEGO/Kerberos auth (`[server.kerberos]`, `internal/server/kerberos.go`): uopi challenges with `401 Negotiate` and resolves the user from the validated ticket instead of relying on a proxy header Firefox never triggers; on non-Kerberos hosts (SSSD/LDAP) use standalone built-in HTTP Basic auth — either validated via PAM (`[server.basic_auth]`, `internal/pamauth`, build with `make backend-pam`) or, keeping the static binary, pure-Go LDAP search-then-bind (`[server.ldap]`, `internal/ldapauth`) — sharing `internal/server/basicauth.go` (which also challenges the page load so the browser shows its login dialog) with optional built-in TLS (`[server.tls]`) + - [x] dpi scaling seems not to work on firefox — root font-size now folds in `window.devicePixelRatio` (`applyZoom` = 16×zoom×dpr) with `watchDpr()` re-applying on monitor change - [ ] **MAJOR** Implement configuration manager: - configuration is a set of signals (that can be organized in group and subgroup) that are used to configure a system or a sub system - with configuration manager user should be able to: @@ -75,11 +78,11 @@ - [x] make the toolbar as clean as possible (toolbar-right now: History · 📖 · zoom · Tools · Edit) - [x] panel-selection list: the whole row is clickable to open a panel (not just the name text); `onClick` moved to the `