2021 Commits

Author SHA1 Message Date
Eric Wagner
016e51b4ac use username attr for matching group members 2024-02-17 02:25:25 +00:00
Andrew Ruthven
c75e7aee29 If curl is missing, complain, loudly
As requested on #175,
2024-02-04 01:40:08 +13:00
Andrew Ruthven
1ca8284bdc Add ROOM as a principal type
This hopefully resolves #282.
2024-01-21 19:12:42 +13:00
Andrew Ruthven
39d0cd5837 Don't change passwords to $pwstars
The password input boxes are supposed to contain the value of $pwstars,
not the string '$pwstars'.
2024-01-21 13:34:30 +13:00
Andrew Ruthven
dabe01657d Bump the AWL version here as well 2024-01-20 15:27:51 +13:00
Andrew Ruthven
d42c3dc186 Add PHP version check to setup.php 2024-01-20 15:27:51 +13:00
Andrew Ruthven
3bf44378fa Fix checking if the session is active
The phpversion check was backwards. For PHP >= 5.4.0 we should be
using session_status() === PHP_SESSION_ACTIVE not < 5.4.0.

But in fact, we only support >= 5.4.0, so this check is now redundant.
2024-01-20 02:21:40 +00:00
Chris S
069445579c Fix conversion to UTC for DST changes
The RepeatRuleDateTime constructor extracts the date's time zone then
passes it to the parent class DateTime. Because PHP's DateTime has full
support for time zones, it compensates for them when parsing a string.
Normally this isn't a problem, because the opposite occurs when a
DateTime is converted back into a string; the two adjustments cancel
each other.

Davical often converts a time to UTC by negating the time zone offset
and adding it to the underlying DateTime (keeping the time zone intact).
A problem occurs when the result is on the other side of a daylight-
saving-time transition. In that case the adjustments do not cancel and
an incorrect time string is returned.

This bug is tricky because the problem doesn't manifest during the DST
transition iself, but hours earlier or later depending on the original
time zone. For example, 2022-03-12T18:30:00-08:00 (America/Los_Angeles)
is 2022-03-13T02:30:00Z. Since 2022-03-13 is a 23-hour day in the Los
Angeles time zone (the 2AM-3AM hour is skipped) this becomes
2022-03-13T03:30:00-07:00 after adding the negated offset. FloatOrUTC()
would strip the new offset and simply return "20220313T033000".
2024-01-19 19:13:07 +13:00
eppesuig
de29c6c6ee Better check for $_SERVER['PATH_INFO'] 2023-06-21 23:21:57 +00:00
Andrew Ruthven
ea2a75d86b Confidential resources should retain more reccurence information
To allow for correct expansion of recurring confidential information
we also need to retain EXDATE, RECURRENCE-ID and SEQUENCE, otherwise
client side expansion may well be wrong.

Closes #291
2023-05-02 10:44:52 +00:00
Andrew Ruthven
e8f3a3e6f2 Add a missing space to a SQL statement to fix adding groups.
It looks to me like this bug has been present since 2011.

Closes: #294
2023-04-30 12:13:37 +12:00
Scott Savarese
0059d0dcdb Support ldap connections via URI to handle ldaps and redundant ldap servers 2023-04-27 11:00:50 +00:00
Florian Schlichting
effc004741 use "." to concatenate strings, not "+" (fixes #288)
Unsupported operand types: string + string at /usr/share/davical/inc/caldav-ACL.php:146
2023-03-23 22:17:23 +01:00
Andrew Ruthven
b40c96debb If time-range is set, only return matching events.
Closes #280
2023-03-12 20:19:10 +01:00
Andrew Ruthven
15d01c8bed Store DTSTART and DTEND from user in shadow columns
We want to store the calculated dtstart and dtend in the database so we can
use SQL to fetch records. However, we also need what the user sent us so we
can allow prop-filters to be used as well.

So we store what the user sends us in dtstart_orig and dtend_orig and only
use for relevant prop-filter reports.
2023-03-12 20:17:43 +01:00
Andrew Ruthven
5a73991496 DTSTART on VTODO is optional, don't force it to be set.
If we force setting DTSTART, then you can't use prop-filter to find VTODOs
with a DUE set and DTSTART unset. And, well, why should DTSTART be set to DUE?

This was introduced in 18150d702d91fa1a687801baa582d967e79fff8d .
2023-03-12 20:05:48 +01:00
Andrew Ruthven
149ec3555f CLASS is an optional field, don't set it to PUBLIC
As specified in RFC5545 the CLASS field is optional, and if it isn't present
is treated as PUBLIC. To allow a is-not-defined prop-filter to find
resources without CLASS set, we need to not store in the database. This
turns out to be okay, because to enforce privacy we always check to see if
it is PRIVATE or CONFIDENTIAL. We never check to see if it is PUBLIC.

Closes #284.
2023-03-12 20:05:48 +01:00
Andrew Ruthven
4a380b12a2 Fixes to is-defined and is-not-defined prop-filter
Gosh, this was completely broken previously. A number of different scenarios now work.

I have used some of the state I've seen in a largish production database with the
presence of NULL and empty strings. I've assumed that empty string should be treated
as is-not-defined. Happy to be talked out of that.

Closes #281.
2023-03-12 20:05:48 +01:00
Andrew Ruthven
7349944fbc Remove change entry in file, that's what git history is for 2023-03-12 20:05:48 +01:00
Piotr Filip
13c77fdcab check owner when deleting 2023-03-01 21:29:44 +01:00
Florian Schlichting
4b7abbbd83 drop default $position argument from BuildXMLTree everywhere (awl!22) 2023-02-26 22:10:34 +01:00
Andrew Ruthven
e3b5c331be Add a primary key to calendar_alarm table.
Also fixed a bug in scripts/refresh-alarms.php if there was an
alarm with a duplicate trigger.

This is part of the fix for #276.
2023-02-15 07:42:34 +00:00
Andrew Ruthven
6819d6d7d1 Add a primary_key to the addressbook_addresses_* tables
This is part of the fix for #276.
2023-02-15 07:42:34 +00:00
Andrew Ruthven
c3970f3be2 Fix RRULE for BYHOUR, BYMINUTE and BYSECOND
Closes #283.
2023-02-15 07:28:35 +00:00
Andrew Ruthven
8444347b02 We no longer support PHP 5.1, assume that DateTime is available 2023-02-15 07:28:35 +00:00
Andrew Ruthven
43996a3297 Create .in and .out calendars on principal creation.
Closes #227
2023-02-05 13:04:09 +00:00
Andrew Ruthven
0041577fc8 Handle baseDNGroups being unset. 2023-02-04 19:03:50 +13:00
Andrew Ruthven
444a098130 Ensure that groups_nothing_done is defined
Closes #278.
2023-02-04 05:48:09 +00:00
Andrew Ruthven
f86eaef5b8 Use dbg_error_log instead of dbg_log_array
Closes #277.
2023-02-04 03:21:48 +00:00
Andrew Ruthven
be60ec1778 Improve on SQL syntax fix to keep logging working, and add regression test.
Closes #279.
2023-02-04 03:09:40 +00:00
Tobias Brox
6e6ff6b115 Fix SQL syntax error if is-not-defined is used as a prop-filter. 2023-02-04 03:09:40 +00:00
Andrew Ruthven
0da12be223 Stop caching bound collections.
This was causing binding/1038-PROPFIND-Depth-2 to fail as the getctag that
was found didn't match what was expected. Looking at how bound collections
are handled, there is a lot of metadata that we're missing.

Preferably we'd cache or otherwise restore that metadata, but I'm going
to leave that as a future enhancement. ;)
2023-01-18 00:11:57 +13:00
Andrew Ruthven
0cb7381c88 Keep track of proxy information for a Collection when using memcached
The test regression-suite/0549-iCal-REPORT was failing due to us not
keeping track of the proxy information when storing/fetching collections
from the cache.
2023-01-18 00:11:57 +13:00
Andrew Ruthven
7a3486563c Only cache a Principal if we've actually loaded something. 2023-01-18 00:11:57 +13:00
Andrew Ruthven
a323ba8dae Don't change the day of the month to 28, if it is > 28
Gosh. The logic was saying, if the modified date has a day of the
month > 28, change it to 28. Which is rather odd. Don't do that.

This closes #248. It also fixes a bug with FREQ=MONTHLY;BYMONTHDAY=-1
as it turns out.
2022-12-18 13:52:48 +13:00
Andrew Ruthven
6e68c221e9 Add more logging to investigate the 28th problem on issue #248
I reckon this is useful logging to have, keep it around.
2022-12-18 13:52:48 +13:00
Andrew Ruthven
7a8c7b5b25 Convert loop_limit to a config item 2022-12-15 20:50:44 +00:00
Andrew Ruthven
513db6b8d1 Remove a stray space 2022-12-15 20:50:44 +00:00
Andrew Ruthven
d93a5196b8 Increase loop limit for finding next instance for Recurrence Rules.
With complex rules, it make take more than 10 expansions to find the
next valid date. Increase this to 100, it doesn't slow things down too
much.

I've also added some additional error logging if this issue occurs
again.

Closes #268.
2022-12-15 20:50:44 +00:00
Andrew Ruthven
0fdb3ff558 Add more logging to try and find the root cause for issue 268 2022-12-15 20:50:44 +00:00
Andrew Ruthven
3909ec52f1 Convert RRule debugging to use dbg_error_log
This stops the debugging from being sent to stdout, which goes to the client and
mucks up the test results.
2022-12-15 20:50:44 +00:00
Andrew Ruthven
a5d19142bb Fix typo 2022-12-15 22:56:47 +13:00
Piotr Filip
f29af80116 delete collection by id 2022-12-13 00:30:27 +00:00
Bill McGonigle
abbb6e5e70 support php_fpm under Apache 2.4 (missing PATH_INFO with Apache handler). 2022-12-13 00:12:44 +00:00
Piotr Filip
35641b099a refactor scripts to allow operation with Content-Security-Policy: script-src 'self' 2022-12-12 21:32:57 +00:00
ruliane
43bda7a5ba Fix error when $icfg is not set. 2022-12-12 21:13:49 +00:00
ruliane
19ec6fd2fb Fix PHP Notice: Undefined variable: body in /usr/share/davical/inc/iSchedule.php on line 435 2022-12-12 20:57:34 +00:00
Andrew Ruthven
042237b05d PHP 8.2 seems to set the timezone to UTC, always set Pacific/Auckland for testcases
Previously the logic only set Pacific/Auckland if the date.timezone setting
on the PHP ini files wasn't set. Let's just always set it if we're processing
the test suite.
2022-12-10 15:37:43 +13:00
Andrew Ruthven
6ad794eae6 freq_name is only used locally
This doesn't need to be an object field.
2022-12-10 14:37:31 +13:00
Andrew Ruthven
aab8ddfd30 Ensure that all fields are defined, not added dynamically.
PHP 8.2 deprecates dynmically adding properties. See:
  https://php.watch/versions/8.2/dynamic-properties-deprecated
2022-12-10 14:37:31 +13:00