* feat: introduce tls parameters in config to allow startTLS
* feat: pass tls config for startTLS to ldap server
* build: update libs to use newer ldap
* feat: allow tls config for startTLS
* feat: introduce new prometheus monitor object
* feat: add LDAPMonitorWatcher as a potential replacement for v0 Collector
* feat: pass monitor object as dependency and instrument core operations
* feat: instantiate monitor in main
* ci: exclude mock files
* ci: generate mocks before running tests and go vet
* ci: make vet command keep going in case of errors
reason is due to the following happening in the GetStats method of the ldap.Stats struct
```
internal/monitoring/mock_interfaces.go:92:13: assignment copies lock value to ret0: (github.com/nmcclain/ldap.Stats, bool) contains github.com/nmcclain/ldap.Stats contains sync.Mutex
internal/monitoring/mock_interfaces.go:93:9: return copies lock value: github.com/nmcclain/ldap.Stats contains sync.Mutex
internal/monitoring/ldap_test.go:23:56: call of mockLDAPServer.EXPECT().GetStats().MinTimes(1).Return copies lock value: github.com/nmcclain/ldap.Stats contains sync.Mutex
```
* deps: move to use go.uber.org/mock/gomock
* fix: offload prometheus logic to the monitoring package
* fix: offload ui logic to the asset package
* refactor: use handlers coming from assets and monitoring package
* ci: add unit test run and vet command
* fix: make vet happy and adjust code
* fix: update and upgrade libraries
side note:
* using commit to trigger release-please workflow in light of recent changes regarding branch strategy
* ci: introduce dependabot
* build: make build vars optional and passable via env
* build: use . for BUILD_FILES var to allow buildvcs flag
* build: create mkbindir, build and sha256 targets
* build: reuse build target for each platform specific compilation
* Ensure same go version for main and plugins
* chore: release 2.3.0
Release-As: 2.3.0
* release-please
* Fix(plugins)!: Rename the groups table to ldapgroups (#326)
The groups table name is a reserved keyword in mysql and requires that
the table name be escaped with backticks in order to use the groups
name. Other databases such as postgres do not support the use of the
backticks in the query statements. This change renames the groups table
to ldapgroups in oder to avoid this problem altogether.
This does have a dependency on the backend sql plugins to alter the
schema to match the new name.
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
Co-authored-by: Chris F Ravenscroft <chris@voilaweb.com>
* chore: update docker sqlite with ldapgroups (#338)
* feat: Update migration code to support table names (#339)
* chore(dev): release 2.3.0 (#337)
* ci: change pr name pattern for release please
* ci: switch to use master as default branch and plan to drop dev
* fix: exploit release-please for tagging in code
* fix: use runtime/debug to fetch git build info
* fix: use newer function to fetch git info for version
* build: drop build tags
* feat: graceful shutdown (#343)
* fix: start servers on separate goroutines
* fix: listen to signals for graceful shutdowns
* fix: exit with 0 in case of programmed termination
---------
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
Co-authored-by: shipperizer <alexcabb@gmail.com>
Co-authored-by: Billy Olsen <wolsen@users.noreply.github.com>
* build: make build vars optional and passable via env
* build: use . for BUILD_FILES var to allow buildvcs flag
* build: create mkbindir, build and sha256 targets
* build: reuse build target for each platform specific compilation
* Ensure same go version for main and plugins
* chore: release 2.3.0
Release-As: 2.3.0
* release-please
* Fix(plugins)!: Rename the groups table to ldapgroups (#326)
The groups table name is a reserved keyword in mysql and requires that
the table name be escaped with backticks in order to use the groups
name. Other databases such as postgres do not support the use of the
backticks in the query statements. This change renames the groups table
to ldapgroups in oder to avoid this problem altogether.
This does have a dependency on the backend sql plugins to alter the
schema to match the new name.
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
Co-authored-by: Chris F Ravenscroft <chris@voilaweb.com>
* chore: update docker sqlite with ldapgroups (#338)
* feat: Update migration code to support table names (#339)
* chore(dev): release 2.3.0 (#337)
* ci: change pr name pattern for release please
* ci: switch to use master as default branch and plan to drop dev
* fix: exploit release-please for tagging in code
* fix: use runtime/debug to fetch git build info
* fix: use newer function to fetch git info for version
* build: drop build tags
---------
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
Co-authored-by: shipperizer <alexcabb@gmail.com>
Co-authored-by: Billy Olsen <wolsen@users.noreply.github.com>
* build: make build vars optional and passable via env
* build: use . for BUILD_FILES var to allow buildvcs flag
* build: create mkbindir, build and sha256 targets
* build: reuse build target for each platform specific compilation
* Ensure same go version for main and plugins
* chore: release 2.3.0
Release-As: 2.3.0
* release-please
* Fix(plugins)!: Rename the groups table to ldapgroups (#326)
The groups table name is a reserved keyword in mysql and requires that
the table name be escaped with backticks in order to use the groups
name. Other databases such as postgres do not support the use of the
backticks in the query statements. This change renames the groups table
to ldapgroups in oder to avoid this problem altogether.
This does have a dependency on the backend sql plugins to alter the
schema to match the new name.
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
Co-authored-by: Chris F Ravenscroft <chris@voilaweb.com>
* chore: update docker sqlite with ldapgroups (#338)
* feat: Update migration code to support table names (#339)
* chore(dev): release 2.3.0 (#337)
---------
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
Co-authored-by: shipperizer <alexcabb@gmail.com>
Co-authored-by: Billy Olsen <wolsen@users.noreply.github.com>
The current TRIM_FLAGS specify gcflags and asmflags directly in order to
trim the path of the resulting binaries. This results in an error where
the plugins cannot be loaded due to the error: "built with a different
version of package". Per https://github.com/golang/go/issues/51955 in the
golang repository, this is explicitly not supported. Switching to use the
go build command's -trimpath flag resolves the issue.
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
Cross-platform changes:
- No SysLog on Windows (#289)
Code quality:
- CodeSee integration
- Add CodeQL workflow for GitHub code scanning (#295)
Correctness:
- Construct DNs under ou=users for uniqueMember group attribute
- Use NameFormat/GroupFormat when constructing RDN attributes
- Brian Candler (@candlerb) completed the above by making sure they were supported where it matters
- The directory structure can be navigated up and down using any LDAP browser
- searchMaybePosixAccounts: add filter to respect searchBaseDN (#304)
- Feature: introduce legacy behavior, based on past versions (#318)
Security/Updates:
- Bump golang.org/x/crypto in /v2
- Update Go Versions to 1.19, 1.20 (#314)
- Added anonymousdse backend option to config sample (#316)
Qualify of life:
- Add devcontainer (#306)
- Add help command to Makefile (#307)
- Update go.work to 1.19 (#315)