Commit Graph

23433 Commits

Author SHA1 Message Date
Pascal Bleser
4a2f9463e4 groupware: pollute code with NOSONAR comments, and make a little more use of JMAP API templates 2026-06-16 16:51:37 +02:00
Pascal Bleser
99eb9bfb57 groupware: docs: add a quick copy-pastable block for running ldapsearch 2026-06-16 16:51:37 +02:00
Pascal Bleser
65579abd12 groupware: upgrade redocly to 2.24.0 2026-06-16 16:51:37 +02:00
Pascal Bleser
c87cbf0291 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-16 16:51:37 +02:00
Pascal Bleser
b3819eff86 groupware: upgrade redocly/cli 2.20.0 -> 2.24.0 2026-06-16 16:51:37 +02:00
Pascal Bleser
ee502a2395 groupware: add web frontend settings to the vscode launcher 2026-06-16 16:51:37 +02:00
Pascal Bleser
10747d57f9 groupware: clarify the ContactCard situation 2026-06-16 16:51:37 +02:00
Pascal Bleser
4a8182d45d groupware: add contact sorting query parameter and fix default sorting (must use updated instead of name) 2026-06-16 16:51:37 +02:00
Pascal Bleser
f5660fd0a6 groupware: documentation: more calendar examples 2026-06-16 16:51:37 +02:00
Pascal Bleser
cf29107524 groupware: sort contacts in addressbook by name 2026-06-16 16:51:37 +02:00
Pascal Bleser
b3373a85dc (chore) groupware: tests/groupware: upgrade dependencies 2026-06-16 16:51:37 +02:00
Pascal Bleser
0bed356966 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-16 16:51:37 +02:00
Pascal Bleser
eec74f95d4 groupware: devtools: add email encryption settings to idmldap.toml 2026-06-16 16:51:36 +02:00
Pascal Bleser
50d6384e4d groupware: upgrade redocly/cli 2.15.1 -> 2.20.2 2026-06-16 16:51:36 +02:00
Pascal Bleser
8adbfebe7f groupware: use master auth in launcher 2026-06-16 16:51:36 +02:00
Pascal Bleser
a1ac3ebcf3 groupware: upgrade Stalwart image in integration tests from 0.15.0 to 0.15.5 2026-06-16 16:51:36 +02:00
Pascal Bleser
33f3f6cfec groupware: upgrade Stalwart image in opencloud_full from 0.15.0 to 0.15.5 2026-06-16 16:51:36 +02:00
Pascal Bleser
d1aa3025d8 groupware: add UI example of a ContactCard to the documented examples 2026-06-16 16:51:36 +02:00
Pascal Bleser
36931987ec groupware: minor logging improvements to the session cache 2026-06-16 16:51:36 +02:00
Pascal Bleser
6b8f7207d6 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-16 16:51:35 +02:00
Pascal Bleser
8244e4b22f groupware: remove remnants of go-swagger documentation, since we are switching to using our own tool instead 2026-06-16 16:50:52 +02:00
Pascal Bleser
984a15f379 groupware: add jscontact examples, and move them to jmap/model_examples.go to avoid dependency recursion 2026-06-16 16:50:52 +02:00
Pascal Bleser
540f063923 groupware: use the OIDC client ID 'web' instead of 'groupware' 2026-06-16 16:50:52 +02:00
Pascal Bleser
62589d0ca0 groupware: add STALWART_AUTH_DIRECTORY variable to .env 2026-06-16 16:50:52 +02:00
Pascal Bleser
124ed20e13 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-16 16:50:52 +02:00
Pascal Bleser
e0a0b7d3eb groupware: update DEVELOPERS.md based on Jörn's feedback 2026-06-16 16:50:52 +02:00
Pascal Bleser
5dfc386ed9 auth-api: deal with errors properly in NewService 2026-06-16 16:50:52 +02:00
Pascal Bleser
30e2e9ca36 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-16 16:50:52 +02:00
Pascal Bleser
6fdc4a830d groupware: convert documentation to proper markdown 2026-06-16 16:50:52 +02:00
Pascal Bleser
c404a58557 groupware: bump redocly/cli from 2.14.6 to 2.15.1 2026-06-16 16:50:52 +02:00
Pascal Bleser
65ec598030 groupware: also update DEVELOPER.md with new OpenAPI documentation generation tooling 2026-06-16 16:50:52 +02:00
Pascal Bleser
29c1e4e8b2 groupware: update README to new API documentation generation process, and remove defunct files 2026-06-16 16:50:52 +02:00
Pascal Bleser
48b00db7a7 groupware: more API examples 2026-06-16 16:50:52 +02:00
Pascal Bleser
f5cbda1a66 groupware: change Makefile to use groupware-apidocs instead of go-swagger 2026-06-16 16:50:52 +02:00
Pascal Bleser
9ea44cb5ce update redocly 2.14.5 -> 2.14.6 2026-06-16 16:50:52 +02:00
Pascal Bleser
6b396ce90b groupware: migrate to cobra instead of urfave 2026-06-16 16:50:52 +02:00
Pascal Bleser
9c57b8dcde groupware: update pnpm 10.28.0 -> 10.28.1 2026-06-16 16:50:52 +02:00
Pascal Bleser
687db38ee1 fix go.mod by tidying after a significant rebase 2026-06-16 16:50:51 +02:00
Pascal Bleser
ef7b1d4a72 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-16 16:50:11 +02:00
Pascal Bleser
7ee2cc2e91 groupware: update to Stalwart 0.15.0 2026-06-16 16:50:11 +02:00
Pascal Bleser
96d8785076 groupware: shift some attributes of the Groupware object around, in defaults and config sub-structures 2026-06-16 16:50:11 +02:00
Pascal Bleser
b67e3b4cc4 groupware: fix failing pkg/jscontact unit tests 2026-06-16 16:50:11 +02:00
Pascal Bleser
28c0c3d368 groupware: fix failing pkg/jscalendar unit tests 2026-06-16 16:50:11 +02:00
Pascal Bleser
ad9820d437 groupware: add description and version annotations for env configuration properties 2026-06-16 16:50:11 +02:00
Pascal Bleser
c5e67d7d6f 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-16 16:50:11 +02:00
Pascal Bleser
531e913ca4 groupware: add retrieving and adding mailboxIds for drafts and sent if they are missing 2026-06-16 16:50:11 +02:00
Pascal Bleser
27a5b32c8d groupware: refactor response objects to take a list of accountIds 2026-06-16 16:50:11 +02:00
Pascal Bleser
8383d525d6 groupware: minor: remove network declaration in stalwart.yml 2026-06-16 16:50:11 +02:00
Pascal Bleser
6741263e09 groupware: fix missing casting to jmap.State after changes in pkg/jmap 2026-06-16 16:50:11 +02:00
Pascal Bleser
8130ab97da groupware, auth-api: remove tracing and tracing configuration 2026-06-16 16:50:11 +02:00