Commit Graph

2241 Commits

Author SHA1 Message Date
Samuel Tardieu
8ace7878a1 fix misindented early return
The wrong indentation could cause the mail hook to bail early without
any logging when the end time of the event being added/modified happened
later than the current boundary being checked (1 full minute before the
current time).

For example, this caused emails not to be sent in the following setup:
Etar + DAVx⁵ on Android.
2026-01-03 15:43:57 +01:00
John Wiegley
1f76b08831 Add CardDAV supported-address-data, update vCards to 4.0 (#1948)
* Add CardDAV supported-address-data, update vCards to 4.0

- radicale/app/propfind.py: Add CS:getctag and CR:supported-address-data
  properties to VADDRESSBOOK collections in allprop responses; implement
  CR:supported-address-data handler that advertises vCard 4.0 as preferred
  format with 3.0 fallback per RFC 6352 section 6.2.2

- radicale/tests/static/contact1.vcf: Update from vCard 3.0 to 4.0 format

- radicale/tests/static/contact_multiple.vcf: Update both contact entries
  from vCard 3.0 to 4.0 format

- radicale/tests/static/contact_photo_with_data_uri.vcf: Update from vCard
  3.0 to 4.0 format; change PHOTO property from 3.0 syntax with ENCODING=b
  and TYPE parameters to 4.0 data URI syntax

* Conditionally offer vCard 4.0 based on vobject version

- Add vobject_supports_vcard4() helper function in utils.py
- Modify propfind.py to only advertise vCard 4.0 if vobject >= 1.0.0
- Add vCard 3.0 static test files for fallback testing
- Add tests for both vCard 3.0 and 4.0 contacts (v4 tests skipped if
  vobject < 1.0.0)
- Add propfind tests for CR:supported-address-data property

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Default vCard fixtures to v3.0, add explicit v4 files

- contact1.vcf: Change VERSION from 4.0 to 3.0 to make vCard 3.0 the default
  test fixture format, since vCard 3.0 is more widely supported

- contact1_v3.vcf: Delete file as contact1.vcf now serves as the v3.0 fixture

- contact1_v4.vcf: Add new file with VERSION 4.0 for explicit vCard 4.0
  testing with vobject >= 1.0.0

- contact_multiple.vcf: Change VERSION from 4.0 to 3.0 for both contacts to
  align with new default

- contact_multiple_v3.vcf: Delete file as contact_multiple.vcf now serves as
  the v3.0 fixture

- contact_multiple_v4.vcf: Add new file with VERSION 4.0 for both contacts

- contact_photo_with_data_uri.vcf: Change VERSION from 4.0 to 3.0 and update
  PHOTO property to use v3.0 format with ENCODING=b;TYPE=png parameters

- contact_photo_with_data_uri_v3.vcf: Delete file as
  contact_photo_with_data_uri.vcf now serves as the v3.0 fixture

- contact_photo_with_data_uri_v4.vcf: Add new file with VERSION 4.0 and v4.0
  PHOTO data URI format

- test_base.py: Update test methods to use renamed fixture files, with v3.0
  tests using default fixtures and v4.0 tests using explicit _v4.vcf files

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 16:28:10 +01:00
Peter Bieringer
17a3816e91 add comment, code review 2025-12-28 13:12:41 +01:00
Peter Bieringer
b60718a21b extend content output for verify-item 2025-12-28 12:39:39 +01:00
Peter Bieringer
bab630a728 remove normal hexdump output 2025-12-28 12:39:25 +01:00
Peter Bieringer
9801cca9d9 fix detection of unicode + hexdump header 2025-12-28 12:38:59 +01:00
Peter Bieringer
baacba191b adjust/extend copyright 2025-12-28 09:13:18 +01:00
Peter Bieringer
fdcd3e2deb fix tox issues 2025-12-28 09:13:07 +01:00
Peter Bieringer
7e1890d630 request log: add checksum on debug level, call expensive debug only on debug level 2025-12-28 08:09:35 +01:00
Peter Bieringer
22d253c95a log_bad_put_request_content: log hexdump of request on debug level 2025-12-28 08:09:35 +01:00
Peter Bieringer
76abfe719b only call expensive debug logging on debug level 2025-12-28 08:09:35 +01:00
Peter Bieringer
6bd7a5b5e3 add checksum and hexdump support 2025-12-28 08:09:35 +01:00
Peter Bieringer
61136c1e7a log max_connections on startup 2025-12-17 08:41:01 +01:00
Peter Bieringer
cbece4f276 catch 2 more xml tokens 2025-12-17 08:31:08 +01:00
Peter Bieringer
cf98ef0b4a rename function and fix type 2025-12-13 08:06:58 +01:00
Peter Bieringer
c73a53d815 remove copy-paste overhead 2025-12-13 08:06:44 +01:00
Peter Bieringer
690914e49f add unit 2025-12-13 08:00:06 +01:00
Peter Bieringer
b8ed32f3ee log max-content-length on startup, add formatted int to raw values 2025-12-13 07:59:28 +01:00
Peter Bieringer
2411b63852 add function for calculating units for integers 2025-12-13 07:59:02 +01:00
Peter Bieringer
81b3c28737 test RFC4791#5.2.5: SHOULD NOT be returned by a PROPFIND DAV:allprop request 2025-12-12 08:49:23 +01:00
Peter Bieringer
a7e9521b38 honor RFC4791#5.2.5: SHOULD NOT be returned by a PROPFIND DAV:allprop request 2025-12-12 08:49:13 +01:00
Peter Bieringer
c1f39d24f7 add new test ics 2025-12-11 23:14:08 +01:00
Peter Bieringer
9a31087dfa add testcases for max-resource-size 2025-12-11 23:08:21 +01:00
Peter Bieringer
edd6195b6b add support for max-resource-size check on PUT 2025-12-11 23:07:58 +01:00
Peter Bieringer
e1b0721f9e change to dedicated option for propfind/max_resource_size 2025-12-11 22:55:41 +01:00
Peter Bieringer
bc2a14481f add new option max_resource_size 2025-12-11 22:53:02 +01:00
Peter Bieringer
e66d83cd84 add explanation to default value 2025-12-11 22:50:35 +01:00
Peter Bieringer
b51dcccd19 improve type specification 2025-12-11 22:44:19 +01:00
Peter Bieringer
6e3b277ff5 reduce to 80% for base64 coverage 2025-12-11 08:59:44 +01:00
Peter Bieringer
c3dfd5584d add test case for max-resource-size and getctag 2025-12-11 08:54:42 +01:00
Peter Bieringer
dd153df6cb add support for max-resource-size using max-content-length 2025-12-11 08:54:42 +01:00
Peter Bieringer
fcfbde9608 feed max-content-length into functions 2025-12-11 08:54:42 +01:00
Peter Bieringer
b3a65627e4 enrich class with max-content-length 2025-12-11 08:54:42 +01:00
Peter Bieringer
cd792ef67c add selection of XML query flags to request status log line 2025-12-11 08:39:53 +01:00
Peter Bieringer
1b5d83e132 cosmetics 2025-12-11 06:28:50 +01:00
Peter Bieringer
4f8c3fff05 remove unnecessary open+read for mtime+size cache 2025-12-10 21:08:16 +01:00
Peter Bieringer
f879bd5c5d bugfix 2025-12-10 18:34:22 +01:00
Peter Bieringer
c0af7bf1ba extend profiling by logging header and XML request in case min duration exceeded 2025-12-10 18:21:21 +01:00
Peter Bieringer
f015b8e7a1 avoid raise condition with parallel running profilers 2025-12-10 18:12:08 +01:00
Peter Bieringer
2b2c417b1b implement log of response header 2025-12-10 18:11:20 +01:00
Peter Bieringer
a60e86671b extend copyright 2025-12-10 18:10:51 +01:00
Peter Bieringer
64f5e58549 add support for logging XML request conditionally for profiling 2025-12-10 18:09:04 +01:00
Peter Bieringer
183e556144 Adjust: [logging] header/content debug log indended by space to be skipped by logwatch 2025-12-10 18:01:14 +01:00
Peter Bieringer
bac608a37a add support for empty argument on pretty_xml 2025-12-10 17:52:54 +01:00
Peter Bieringer
97875b9514 log status of new/existing log/profile header/content options on startup 2025-12-10 17:50:20 +01:00
Peter Bieringer
dfb932a448 new options [logging] profiling_per_request_header profiling_per_request_xml 2025-12-10 17:48:05 +01:00
Peter Bieringer
b819febeb2 new option [logging] response_header_on_debug 2025-12-10 17:47:09 +01:00
Peter Bieringer
d7f54fbc48 profiling: cosmetics 2025-12-09 08:26:27 +01:00
Peter Bieringer
5fbd838eab profiling: cosmetics/alignment 2025-12-08 18:41:43 +01:00
Peter Bieringer
2df265617b profiling: fix for 'none' 2025-12-08 17:55:11 +01:00