Commit Graph

23365 Commits

Author SHA1 Message Date
Pascal Bleser
313d7f832d groupware: pollute code with NOSONAR comments, and make a little more use of JMAP API templates 2026-06-03 18:39:11 +02:00
Pascal Bleser
ea437283fa groupware: docs: add a quick copy-pastable block for running ldapsearch 2026-06-03 18:39:11 +02:00
Pascal Bleser
810f7d5482 groupware: upgrade redocly to 2.24.0 2026-06-03 18:39:11 +02:00
Pascal Bleser
5dfe44500e groupware: refactor contactcard changes, and Request framework
* implement ContactCard retrieval endpoint for syncing

 * re-implement that endpoint for Email too

 * fix the Mailbox changes endpoint to actually return changes about
   Mailboxes, and not about Emails

 * when querying the diff of Mailboxes without any prior state, return
   an error since the result is not what one would expect

 * introduce the 'changes' API tag and group

 * refactor the successful response functions to consistently return an
   object type and object state whenever possible

 * move the syncing endpoints under /accounts/*/changes/ for better
   clarity, e.g. /changes/emails instead of /emails/mailbox/*/changes
2026-06-03 18:39:11 +02:00
Pascal Bleser
3aa75f306c groupware: upgrade redocly/cli 2.20.0 -> 2.24.0 2026-06-03 18:39:11 +02:00
Pascal Bleser
ef3fca6e83 groupware: add web frontend settings to the vscode launcher 2026-06-03 18:39:11 +02:00
Pascal Bleser
3eaf9504bb groupware: clarify the ContactCard situation 2026-06-03 18:39:11 +02:00
Pascal Bleser
8391173aad groupware: add contact sorting query parameter and fix default sorting (must use updated instead of name) 2026-06-03 18:39:11 +02:00
Pascal Bleser
b4c0a5a438 groupware: documentation: more calendar examples 2026-06-03 18:39:11 +02:00
Pascal Bleser
8680dd31c6 groupware: sort contacts in addressbook by name 2026-06-03 18:39:11 +02:00
Pascal Bleser
b2f868ec7f (chore) groupware: tests/groupware: upgrade dependencies 2026-06-03 18:39:11 +02:00
Pascal Bleser
686c911a39 groupware: fix typos and minor issues
- fix a bunch of minor issues and typos that were found using GoLand
   and gosec

 - add a gosec Makefile target for Groupware related files, in
   services/groupware/Makefile

 - enable checking JMAP session capabilities for events and contacts,
   and only enable skipping that check for tasks until those are
   implemented in Stalwart as well

 - fix a CWE-190 (integer overflow or wraparound) found by gosec

 - consistently use struct references for methods of Groupware and
   Request, instead of mixing up references and copies

 - always log errors when unable to register a Prometheus metric
2026-06-03 18:39:11 +02:00
Pascal Bleser
6198b22227 groupware: devtools: add email encryption settings to idmldap.toml 2026-06-03 18:39:11 +02:00
Pascal Bleser
681f2b365d groupware: upgrade redocly/cli 2.15.1 -> 2.20.2 2026-06-03 18:39:11 +02:00
Pascal Bleser
fbeb41816d groupware: use master auth in launcher 2026-06-03 18:39:11 +02:00
Pascal Bleser
2208e226b5 groupware: upgrade Stalwart image in integration tests from 0.15.0 to 0.15.5 2026-06-03 18:39:11 +02:00
Pascal Bleser
6bfc105e20 groupware: upgrade Stalwart image in opencloud_full from 0.15.0 to 0.15.5 2026-06-03 18:39:11 +02:00
Pascal Bleser
b6566de0ce groupware: add UI example of a ContactCard to the documented examples 2026-06-03 18:39:11 +02:00
Pascal Bleser
dca5ce5eba groupware: minor logging improvements to the session cache 2026-06-03 18:39:11 +02:00
Pascal Bleser
db42de2a35 groupware: add OIDC authentication support between Groupware backend and Stalwart
* re-implement the auth-api service to authenticate Reva tokens
   following the OIDC Userinfo endpoint specification

 * pass the context where necessary and add an authenticator interface
   to the JMAP HTTP driver, in order to select between master
   authentication (which is used when GROUPWARE_JMAP_MASTER_USERNAME and
   GROUPWARE_JMAP_MASTER_PASSWORD are both set) and OIDC token
   forwarding through bearer auth

 * add Stalwart directory configuration "idmoidc" which uses the
   OpenCloud auth-api service API (/auth/) to validate the token it
   received as bearer auth from the Groupware backend's JMAP client,
   using it as an OIDC Userinfo endpoint

 * implement optional additional shared secret to secure the Userinfo
   service, as an additional path parameter
2026-06-03 18:39:11 +02:00
Pascal Bleser
614e2b22c0 groupware: remove remnants of go-swagger documentation, since we are switching to using our own tool instead 2026-06-03 18:39:11 +02:00
Pascal Bleser
f9bd0e443f groupware: add jscontact examples, and move them to jmap/model_examples.go to avoid dependency recursion 2026-06-03 18:39:11 +02:00
Pascal Bleser
9bbd136db5 groupware: use the OIDC client ID 'web' instead of 'groupware' 2026-06-03 18:39:11 +02:00
Pascal Bleser
b56abc5ee6 groupware: add STALWART_AUTH_DIRECTORY variable to .env 2026-06-03 18:39:11 +02:00
Pascal Bleser
0b59da3d23 groupware: as suggested in the review PR 1994, remove all filename prefixes that match the package (groupware_xyz.go -> xyz.go), for groupware, jmap, jscontact, jscalendar 2026-06-03 18:39:11 +02:00
Pascal Bleser
75f8c01d4f groupware: update DEVELOPERS.md based on Jörn's feedback 2026-06-03 18:39:11 +02:00
Pascal Bleser
e846b2a8e9 auth-api: deal with errors properly in NewService 2026-06-03 18:39:11 +02:00
Pascal Bleser
ffb6c50356 groupware: set GROUPWARE_JMAP_BASE_URL to use the variable STALWART_DOMAIN, in order to make things work correctly when using the non-default value for STALWART_DOMAIN 2026-06-03 18:39:11 +02:00
Pascal Bleser
32a0be7fce groupware: convert documentation to proper markdown 2026-06-03 18:39:11 +02:00
Pascal Bleser
ae37499bb8 groupware: bump redocly/cli from 2.14.6 to 2.15.1 2026-06-03 18:39:11 +02:00
Pascal Bleser
1999db2b36 groupware: also update DEVELOPER.md with new OpenAPI documentation generation tooling 2026-06-03 18:39:11 +02:00
Pascal Bleser
859ffd4df2 groupware: update README to new API documentation generation process, and remove defunct files 2026-06-03 18:39:11 +02:00
Pascal Bleser
fbbe8d0cb0 groupware: more API examples 2026-06-03 18:39:11 +02:00
Pascal Bleser
d42032c87e groupware: change Makefile to use groupware-apidocs instead of go-swagger 2026-06-03 18:39:11 +02:00
Pascal Bleser
786d395e78 update redocly 2.14.5 -> 2.14.6 2026-06-03 18:39:11 +02:00
Pascal Bleser
2e1abbc177 groupware: migrate to cobra instead of urfave 2026-06-03 18:39:11 +02:00
Pascal Bleser
2b24722b46 groupware: update pnpm 10.28.0 -> 10.28.1 2026-06-03 18:39:11 +02:00
Pascal Bleser
b5e9887afc fix go.mod by tidying after a significant rebase 2026-06-03 18:39:11 +02:00
Pascal Bleser
ed30094ae4 API documentation changes for groupware-apidocs
* add example generator infrastructure, with some examples for pkg/jmap
   and pkg/groupware, with more needing to be done

 * alter the apidoc Makefile to stop using go-swagger but, instead, use
   the openapi.yml file that must be dropped into that directory using
   groupware-apidocs (will improve the integration there later)

 * add Makefile target to generate examples

 * bump redocly from 2.4.0 to 2.14.5

 * introduce Request.PathParam() and .PathParamDoc() to improve API
   documentation, as well as future-proofing

 * improve X-Request-ID and Trace-Id header handling in the middleware
   by logging it safely when an error occurs in the middleware
2026-06-03 18:39:10 +02:00
Pascal Bleser
21927b9065 groupware: update to Stalwart 0.15.0 2026-06-03 18:39:10 +02:00
Pascal Bleser
9183e96838 groupware: shift some attributes of the Groupware object around, in defaults and config sub-structures 2026-06-03 18:39:10 +02:00
Pascal Bleser
e64cc2b61d groupware: fix failing pkg/jscontact unit tests 2026-06-03 18:39:10 +02:00
Pascal Bleser
88579e4474 groupware: fix failing pkg/jscalendar unit tests 2026-06-03 18:39:10 +02:00
Pascal Bleser
c6cf297bd6 groupware: add description and version annotations for env configuration properties 2026-06-03 18:39:10 +02:00
Pascal Bleser
63e07b05ff groupware: improve email submission and testing
* jmap/EmailCreate: add more attributes that were omitted: Headers,
   InReplyTo, References, Sender

 * add jmap GetEmailSubmissionStatus

 * improve email integration tests by adding a thorough test for email
   submission

 * jmap integration tests: provision principals and domains using the
   Stalwart Management API, switching from an in-memory to an internal
   directory
2026-06-03 18:39:10 +02:00
Pascal Bleser
fb3aad0bb4 groupware: add retrieving and adding mailboxIds for drafts and sent if they are missing 2026-06-03 18:39:10 +02:00
Pascal Bleser
3cebfb4cff groupware: refactor response objects to take a list of accountIds 2026-06-03 18:39:10 +02:00
Pascal Bleser
74823c59b2 groupware: minor: remove network declaration in stalwart.yml 2026-06-03 18:39:10 +02:00
Pascal Bleser
145a50110d groupware: fix missing casting to jmap.State after changes in pkg/jmap 2026-06-03 18:39:10 +02:00
Pascal Bleser
69d1a06087 groupware, auth-api: remove tracing and tracing configuration 2026-06-03 18:39:10 +02:00