Commit Graph

22730 Commits

Author SHA1 Message Date
Pascal Bleser
3aecf5bc04 groupware: swagger API documentation improvements
* add more documentation for properties

 * fixes after a bit of trial-and-error with go-swagger

 * fix email filter marshalling when there are no search criteria

 * introduce an apidoc.yml that contains Swagger data and is merged when
   generating the swagger.yml from sources
2026-02-10 17:03:58 +01:00
Pascal Bleser
36ac7b56c0 Groupware improvements
* ensure that all the jmap responses contain the SessionState

 * implement missing errors that were marked as TODO

 * moved common functions from pkg/jmap and pkg/services/groupware to
   pkg/log and pkg/structs to commonalize them across both source trees

 * implement error handling for SetError occurences

 * Email: replace anonymous map[string]bool for mailbox rights with a
   MailboxRights struct, as the keys are well-defined, which allows for
   properly documenting them

 * introduce ObjectType as an "enum"

 * fix JSON marshalling and unmarshalling of EmailBodyStructure

 * move the swagger documentation structs from groupware_api.go to
   groupware_docs.go

 * fix: change verb for /groupware/accounts/*/vacation from POST to PUT
2026-02-10 17:03:58 +01:00
Pascal Bleser
dca69a76f5 groupware: minor email searching response improvements + started implementing vacation response setting API 2026-02-10 17:03:58 +01:00
Pascal Bleser
6cd6759152 groupware: add identities of all accounts to the index resource 2026-02-10 17:03:58 +01:00
Pascal Bleser
3c04201c40 groupware: fix email search, add variant that includes the full emails 2026-02-10 17:03:58 +01:00
Pascal Bleser
f2cba45d48 groupware: fix email search, add variant that includes the full emails 2026-02-10 17:03:58 +01:00
Pascal Bleser
ad8f48fd1d Groupware: refactor jmap package, implement Email/set, EmailSubmission
* refactor the jmap package to split it into several files as the
   jmap.api.go file was becoming too unwieldy

 * refactor the Groupware handler function response to be a Response
   object, to be more future-proof and avoid adding more and more
   return parameters while handling "no content" response as well

 * more godoc for the JMAP model

 * add Email creation, updating, deleting (Email/set,
   EmailSubmission/set)

 * add endpoints
   - POST /accounts/{accountid}/messages
   - PATCH|PUT /accounts/{accountid}/messages/{messageid}
   - DELETE /accounts/{accountid}/messages/{messageid}
2026-02-10 17:03:58 +01:00
Pascal Bleser
6a8707c5a3 groupware: implement message search with snippets 2026-02-10 17:03:58 +01:00
Pascal Bleser
203be7555e groupware: blob streaming (upload and download) 2026-02-10 17:03:58 +01:00
Pascal Bleser
5b02a15d34 groupware: more JMAP operations implementation 2026-02-10 17:03:58 +01:00
Pascal Bleser
986150547c groupware: further implementation and improvements 2026-02-10 17:03:58 +01:00
Pascal Bleser
d8d09c56d7 upgrade Stalwart to 0.13.2 2026-02-10 17:03:58 +01:00
Pascal Bleser
45db469542 refactored the Session object, refactored the services/groupware directory, and started Swagger documentation implementation 2026-02-10 17:03:58 +01:00
Pascal Bleser
1307aaca41 groupware: refactoring the API mechanisms 2026-02-10 17:03:58 +01:00
Pascal Bleser
4f052824fe groupware: implement JSON:API's error response format, with a revamped error handling in jmap and services/groupware 2026-02-10 17:03:58 +01:00
Pascal Bleser
df64d48119 Refactor groupware service after ADR decision on the Groupware API
* after having decided that the Groupware API should be a standalone
   independent custom REST API that is using JMAP data models as much as
   possible,
 * removed Groupware APIs from the Graph service
 * moved Groupware implementation to the Groupware service, and
   refactored a few things accordingly
2026-02-10 17:03:58 +01:00
Pascal Bleser
552ccbe300 Groupware and jmap: cleanup and API documentation 2026-02-10 17:03:58 +01:00
Pascal Bleser
360fe43aa5 groupware: remove unneeded messages.go that was a remainder from an earlier implementation attempt, which also fixes compilation issues due to changes in main 2026-02-10 17:03:58 +01:00
Pascal Bleser
4e6cb28ab3 opencloud_full: upgrade Stalwart to 0.12.5, and use the ghcr.io container repository to avoid Hub limits 2026-02-10 17:03:58 +01:00
Pascal Bleser
6e9a36dc75 Groupware improvements: refactoring, k6 tests
* refactored the models to be strongly typed with structs and mapstruct
   to decompose the dynamic parts of the JMAP payloads

 * externalized large JSON strings for tests into .json files under
   testdata/

 * added a couple of fantasy Graph groupware APIs to explore further
   options

 * added k6 scripts to test those graph/me/messages APIs, with a setup
   program to set up users in LDAP, fill their IMAP inbox, activate them
   in Stalwart, cleaning things up, etc...
2026-02-10 17:03:58 +01:00
Pascal Bleser
ce9eca33af fix Stalwart LDAP configuration 2026-02-10 17:03:58 +01:00
Pascal Bleser
1aa09600d3 Use password policy overlay in LDAP and configure Stalwart to use it 2026-02-10 17:03:58 +01:00
Pascal Bleser
c605660d1a upgrade Stalwart to 0.12.4 2026-02-10 17:03:58 +01:00
Pascal Bleser
dfae07d079 groupware: removed debugging logs 2026-02-10 17:03:58 +01:00
Pascal Bleser
2887045e77 jwkset: remove debugging printlns 2026-02-10 17:03:58 +01:00
Pascal Bleser
f8c5464391 auth-api: fix: was missing newly introduced metrics 2026-02-10 17:03:58 +01:00
Pascal Bleser
8b7f3a20f3 groupware and jmap improvements and refactoring 2026-02-10 17:03:58 +01:00
Pascal Bleser
ecee33b6b3 upgrade Stalwart to 0.12 2026-02-10 17:03:58 +01:00
Pascal Bleser
c724413016 minor corrections to the Stalwart configuration 2026-02-10 17:03:58 +01:00
Pascal Bleser
da3ee8e753 Introduce a the auth-api service
* primitive implementation to demonstrate how it could work, still to
   be considered WIP at best

 * add new dependency: MicahParks/jwkset and MicahParks/keyfunc to
   retrieve the JWK set from KeyCloak to verify the signature of the
   JWTs sent as part of Bearer authentication in the /auth API

 * (minor) opencloud/.../service.go: clean up a logging statement that
   was introduced earlier to hunt down why the auth-api service was not
   being started
2026-02-10 17:03:58 +01:00
Pascal Bleser
af53d0226f add an auth-api service to make an exemplary implementation of an external authentication API for third party services such as Stalwart 2026-02-10 17:03:58 +01:00
Pascal Bleser
08a327417a move services/groupware/pkg/jmap to pkg/jmap 2026-02-10 17:03:58 +01:00
Pascal Bleser
4385bcbd59 WIP: restructure the Jmap client, and implement the /me/messages Graph API endpoint with it 2026-02-10 17:03:58 +01:00
Pascal Bleser
d5db66ca37 add an OIDC Directory to Stalwart, requires exposing Keycloak port 8080 directly to access the userinfo endpoint using HTTP since the certificates in traefik are self-signed and end up being rejected by Stalwart with no option to bypass the certificate check 2026-02-10 17:03:58 +01:00
Pascal Bleser
34f32763f4 rename Stalwart fallback admin username from 'admin' to 'mailadmin' since 'admin' exists as a regular user in LDAP and thus won't have access to the administration 2026-02-10 17:03:58 +01:00
Pascal Bleser
8ac66ea187 add missing routing for /groupware (currently unprotected for testing) 2026-02-10 17:03:58 +01:00
Pascal Bleser
5fcbcfcd4d WIP: initial implementation of the groupware service 2026-02-10 17:03:58 +01:00
Pascal Bleser
0b15859388 Add Stalwart container to the opencloud_full deployment, using the OpenLDAP container as a directory for user authentication 2026-02-10 17:03:58 +01:00
Christian Richter
63a0458307 vendor mod tidy
Signed-off-by: Christian Richter <c.richter@opencloud.eu>

 Conflicts:
	go.sum
	vendor/modules.txt
2026-02-10 10:45:09 +01:00
Christian Richter
6f7160556f fix tests
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2026-02-10 10:45:09 +01:00
Christian Richter
7d5d8f3484 adapt graph service
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
Co-authored-by: Ralf Haferkamp <r.haferkamp@opencloud.eu>
2026-02-10 10:45:09 +01:00
Christian Richter
f24041725b Bump traefik to 3.6.7 & adapt initilize_users.go & bump librgraph-api-go
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
Co-authored-by: Ralf Haferkamp <r.haferkamp@opencloud.eu>

# Conflicts:
#	go.mod
2026-02-10 10:45:09 +01:00
Christian Richter
5877bfa8a2 initial skel for external tenant id
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2026-02-10 10:45:09 +01:00
Artur Neumann
13ae67b02c Merge pull request #2257 from opencloud-eu/checkVersionPlaceholderReadyReleaseGo
ci: check version placeholder in release PR
2026-02-10 14:52:26 +05:45
Viktor Scharf
464c528634 update reva after merge #514 (#2309) 2026-02-10 09:12:41 +01:00
Viktor Scharf
564805bf94 fix: make file urls (#2304) 2026-02-09 14:31:58 +01:00
Ralf Haferkamp
c33850f213 Reapply "adapt test for #514 (#2255)" (#2305)
This reverts commit f21207ed96.
2026-02-09 14:23:24 +01:00
VicDeo
ab9c4d8f23 Sanitize web config only once 2026-02-09 14:09:33 +01:00
dependabot[bot]
8c725823f7 build(deps): bump github.com/go-chi/chi/v5 from 5.2.4 to 5.2.5
Bumps [github.com/go-chi/chi/v5](https://github.com/go-chi/chi) from 5.2.4 to 5.2.5.
- [Release notes](https://github.com/go-chi/chi/releases)
- [Changelog](https://github.com/go-chi/chi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/go-chi/chi/compare/v5.2.4...v5.2.5)

---
updated-dependencies:
- dependency-name: github.com/go-chi/chi/v5
  dependency-version: 5.2.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 09:05:12 +01:00
OpenCloud Devops
673f606abf 🎉 Release 5.0.2 (#2230)
* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2

* 🎉 Release 5.0.2
v5.0.2
2026-02-05 17:26:50 +01:00