Commit Graph

1505 Commits

Author SHA1 Message Date
Stephane Martin
5abc8aea43 <report> should contain XML elements, not text 2016-09-20 00:27:03 +02:00
Peter Bieringer
c578470fc3 log depth also on response log line 2016-09-19 20:11:52 +02:00
Peter Bieringer
f52fa73cab check env first before using HTTP_DEPTH 2016-09-19 20:04:11 +02:00
Peter Bieringer
87061df68f add conditional logging of given depth 2016-09-19 19:59:47 +02:00
Peter Bieringer
830d6f9305 add examples of broken vcard and vevent 2016-09-18 19:36:54 +02:00
Peter Bieringer
a5e3ffa427 realign change 2016-09-18 19:30:51 +02:00
Peter Bieringer
e05206eec3 Merge branch 'improved-broken-vcard-handling' of github.com:pbiering/Radicale into improved-broken-vcard-handling 2016-09-18 19:28:15 +02:00
Peter Bieringer
af5c1582dc improved detection of broken vcards 2016-09-18 19:23:24 +02:00
Peter Bieringer
1ffdb03106 simplify patch 2016-09-17 18:16:27 +02:00
Peter Bieringer
ff02d17619 remove temporary debug statements 2016-09-17 17:44:33 +02:00
Peter Bieringer
1cfd3fd95b filter broken vcard entries before delivered, found on real life system at least 2 cards where vobject claimed about
vobject.base.ValidateError: 'VCARD components must contain at least 1 N'
2016-09-17 16:53:24 +02:00
Peter Bieringer
18181374e1 log exception for broken items 2016-09-17 16:29:40 +02:00
Peter Bieringer
d116423458 improved request logging 2016-09-17 15:35:43 +02:00
Peter Bieringer
e6ba31937a 3rd catch 2016-09-17 15:11:02 +02:00
Peter Bieringer
a57fcad270 catch 2nd case for broken object 2016-09-17 13:56:27 +02:00
Peter Bieringer
cd97aab72c try/catch of objects avoiding not serving any object in case an object has no valid contents
also log duration of how many objects are read per folder
2016-09-17 12:52:42 +02:00
Guillaume Ayoub
0c1dbc30bd Log read objects 2016-09-16 14:13:53 +02:00
Guillaume Ayoub
ecb8a99ed1 Merge branch 'master' of github.com:Kozea/radicale 2016-09-16 14:12:36 +02:00
Guillaume Ayoub
2c938ea67a Don't log when skipping .Radicale* files
Patch proposed by @pbiering.
2016-09-16 14:12:05 +02:00
Unrud
def34b1454 Fix BaseCollection.move
The update method doesn't exist.
2016-09-15 11:18:55 +02:00
Guillaume Ayoub
e95d187cbc Merge pull request #509 from Unrud/patch-2
Set password to empty string instead of None
2016-09-07 16:08:37 +02:00
Unrud
f7435814fc Repair hreferences in REPORT response
They were not extended with base_prefix.
2016-09-06 16:53:20 +02:00
Unrud
eb4b513d63 Quote hreferences
RFC 4918 states that they are URIs and RFC 3986 says that URIs must always be in percent-encoded form.
2016-09-06 16:53:20 +02:00
Unrud
83046c80c4 Let reverse proxies overwrite script name
Reverse proxies can overwrite the script name with the HTTP header field X-Script-Name.
2016-09-06 16:53:14 +02:00
Unrud
90486f33a5 Log invalid URLs in XML requests
Before the requests either failed or the invalid hreference was silently dropped.
2016-09-04 22:28:01 +02:00
Unrud
d5b8ddd71c Check that name is valid in name_from_path
Before it was possible craft XML requests, so that the storage backend got requests with invalid hrefs.
2016-09-04 22:28:01 +02:00
Unrud
139076faee Sanitize URLs from XML requests 2016-09-04 22:27:59 +02:00
Unrud
13d652b094 Remove unnecessary module prefix 2016-09-04 22:26:46 +02:00
Unrud
664fa71278 Don't double unquote request URL
"%2525" was transformed to "%" instead of "%25".
2016-09-04 22:26:46 +02:00
Unrud
dbaf58dbfe Remove base_prefix and use SCRIPT_NAME instead
This conforms with the WSGI reference (PEP 333)
2016-09-04 22:26:40 +02:00
Unrud
03fbb1e68e Don't strip {} in get method
If someone uploads a file that starts or ends with the chars {}, all REPORT requests on that collection will fail and it's impossible to delete the file.
2016-09-04 13:35:44 +02:00
Unrud
6df54bf88a Log name of faulty component
If vobject can't parse a component it raises an exception, but the filename of that component is missing in the logs.
2016-09-04 13:23:01 +02:00
Unrud
5ccfe16372 Remove Collection.has
It's the same as BaseCollection.has
2016-09-04 13:21:57 +02:00
Unrud
de09f6689a Only relevant files for last_modified calculation
Leftovers from failed transactions etc. should not change that property.
2016-09-04 13:16:42 +02:00
Unrud
cd9f789294 Name variables for files f
fd sounds more like file descriptions.
prop doesn't sound like a file at all.
2016-09-04 13:14:51 +02:00
Unrud
f5650df5f7 Remove checks for existence of collection
They are unnecessary since the discover methods stopped returning collections that actually don't exist.
2016-09-04 13:13:35 +02:00
Unrud
e7d8b4816c Duplicate code: Use list and get methods 2016-09-04 13:12:55 +02:00
Unrud
5dbf9df876 Add missing checks for safe fileystem components
Currently it's not possible to exploit these.
2016-09-04 13:09:10 +02:00
Unrud
dc501d5dc5 Refactor/Duplicate code: Extract _fsync method 2016-09-04 13:08:12 +02:00
Unrud
77e9ca1252 Remove EtagMismatchError
Etags are not checked in storage anymore and this is unused.
2016-09-04 13:06:09 +02:00
Unrud
a12ef69129 Secure is_safe_filesystem_path_component
On Windows 1/2 would be a safe filesystem path component, but it's not safe to pass it to path_to_filesystem.
Currently only the get method can be called with a href like that and it checked for that.
This just moves the check into the is_safe_filesystem_path_component function.
2016-09-04 12:55:28 +02:00
Unrud
a4a6a62643 Duplicate code: Use is_safe_path_component 2016-09-04 12:53:07 +02:00
Unrud
8d5f2ded42 Describe encoding of Etag 2016-09-04 12:52:29 +02:00
Unrud
d371179487 thread and level in simple log formatter
The log messages are a mess without any allocation to threads.
2016-09-04 11:47:27 +02:00
Unrud
fe5daf801a Set password to empty string instead of None
Prevent exception in auth module.
2016-09-03 10:01:52 +02:00
Guillaume Ayoub
b85fc5bed6 Merge pull request #507 from Unrud/auth
Repair and test authentication
2016-09-02 18:36:31 +02:00
Unrud
9e27d4e2a8 Emulate fullmatch with match
re.fullmatch was introduced in Python 3.4
2016-09-02 15:06:32 +02:00
Unrud
b25a601e28 Test custom header 2016-09-02 14:52:45 +02:00
Unrud
11df2f1184 Test authentication
Test for 2a9f37defb
2016-09-02 14:42:22 +02:00
Unrud
2a9f37defb Repair authentication 2016-09-02 14:41:31 +02:00
Guillaume Ayoub
88d558f9fa Remove useless nested tuples 2016-09-02 11:05:35 +02:00
Guillaume Ayoub
68e1e9dfb2 Don't use mutables in constants or parameters 2016-09-02 11:04:29 +02:00
Unrud
20b1480399 Make copy of headers before mutating 2016-09-02 04:23:47 +02:00
Unrud
f7e995f9f6 Move encoding of answer into response function
Fix #505
2016-09-02 04:10:11 +02:00
Unrud
3df367aad2 Test REPORT on item
Test for 90e4655a44
2016-09-01 06:17:18 +02:00
Unrud
9d2743d797 Test authorization 2016-09-01 06:15:31 +02:00
Guillaume Ayoub
e25373fa85 Merge pull request #501 from Unrud/httperrors
HTTP error messages
2016-08-31 14:49:19 +02:00
Guillaume Ayoub
8d92b371e4 Merge pull request #502 from Unrud/patch-40
Plain text for GET / instead of malformed HTML
2016-08-31 14:42:59 +02:00
Guillaume Ayoub
db681da08e Merge pull request #500 from Unrud/loginuser
Map logins to internal users in Auth module
2016-08-31 14:40:08 +02:00
Unrud
f875bcd892 Plain text for GET / instead of malformed HTML
It's basically the same in browsers and looks nicer in tools that don't support HTML rendering (like curl).
2016-08-31 02:01:18 +02:00
Unrud
ff2b8f6e5c Use NOT_FOUND instead of GONE
Thunderbird doesn't recognize the status code correctly and shows an synchronization error.
2016-08-31 01:54:31 +02:00
Unrud
1ea9b1dca9 Return error for GET requests on directories
Radicale doesn't support directory listings.
2016-08-31 00:45:14 +02:00
Unrud
4ac2e68f5c Add HTTP error messages
Browsers just show a blank page if an error occurs. You have to open the developer tools to see the HTTP status code. E.g. a user wants to download a calendar in the browser and the URL is wrong.

Some tools like curl don't show any indication of an error.
2016-08-31 00:41:08 +02:00
Unrud
689e5c9dd5 Map logins to internal users in Auth module
This makes it possible to implement #349 as a Auth module. Another use case would be to encode usernames that contain characters unsupported by the file system.
2016-08-30 23:13:33 +02:00
Unrud
e782808a14 Remove empty line in log
Separating requests by an empty line doesn't work any longer with parallel (overlapping) requests.
2016-08-30 14:04:16 +02:00
Markus Unterwaditzer
90e4655a44 Don't return <item>/ for events 2016-08-29 17:29:46 +02:00
Guillaume Ayoub
947c57312c Fix a variable name
Fix #494
2016-08-29 12:09:17 +02:00
Guillaume Ayoub
34ad1b9073 Remove useless import 2016-08-29 12:07:58 +02:00
Guillaume Ayoub
fd1742fcea Fix typo 2016-08-29 12:07:30 +02:00
Guillaume Ayoub
9e78454da2 Merge branch 'remupdate' of https://github.com/Unrud/Radicale into Unrud-remupdate 2016-08-26 22:50:26 +02:00
Guillaume Ayoub
a3dcfaacd6 Merge pull request #491 from Unrud/uploadall
Optimize upload of whole collections
2016-08-26 22:34:46 +02:00
Guillaume Ayoub
ac61b18237 Merge pull request #490 from Unrud/hook
Move hook into storage.Collection
2016-08-26 15:58:42 +02:00
Guillaume Ayoub
0e646cdae4 Merge branch 'Unrud-logging' 2016-08-25 11:52:12 +02:00
Unrud
c5342d36d5 Remove BaseCollection.update
I don't think that this can be used for optimizations.

It's useless in the filesystem backend, SQL has REPLACE and I doubt that there is much use in any other storage mechanism.
2016-08-25 06:37:12 +02:00
Unrud
ea63f461a8 Rename upload_all to upload_all_nonatomic 2016-08-25 06:03:13 +02:00
Unrud
30d287ce00 Write files nonatomic in upload_all
It's only used in temporary collections.
2016-08-25 06:03:13 +02:00
Unrud
e31ea57883 Use upload_all for addressbook 2016-08-25 06:03:13 +02:00
Unrud
bc0f8b0a47 Remove duplicate code 2016-08-25 06:03:13 +02:00
Unrud
c57307c585 Rename collections to vobject_items
Like the parameter name of upload_all
2016-08-25 05:52:26 +02:00
Unrud
6045ad97fe Move upload_all from BaseCollection to Collection
This is not used anywhere outside of Collection and probably never will be as WebDAV doesn't support bulk uploads.
2016-08-25 05:47:31 +02:00
Unrud
10786cbad8 Move hook into storage.Collection
The hook is only valid for filesystem storage, it's meaningless for other backends like databases.
2016-08-25 05:40:46 +02:00
Unrud
8db580abce Try to decode URLs with utf-8 (Fixes #486) 2016-08-25 05:30:46 +02:00
Unrud
e40e46e164 Don't disable existing loggers
The logger is retrieved before configure_from_file is called and gets disabled, the same happens when the logging configuration is reloaded.
2016-08-25 05:24:29 +02:00
Unrud
de8c2f0909 Fix SIGHUP handler
The function handler_generator seems useless and the return statement is missing.
2016-08-25 05:24:29 +02:00
Unrud
3b71ab960e Log exceptions (Fixes #447)
Exceptions were just written to stderr but not into logs.
2016-08-25 05:24:24 +02:00
Unrud
c091399f5e Write log to stderr
Be consistent with python's default behavior and play nice with CGI.
2016-08-25 05:19:38 +02:00
Unrud
14515cfe27 Fix logger configuration
Apply patch from #485
2016-08-25 04:29:02 +02:00
Guillaume Ayoub
79bfa9c1d3 Merge pull request #482 from Unrud/smallimprovements
Some small cosmetic improvements for xmlutils
2016-08-24 18:11:06 +02:00
Unrud
f9cabfb20b Test empty filter
Test for d1dbd1df54
2016-08-24 17:52:39 +02:00
Unrud
d1dbd1df54 Fix empty filter
DAVdroid sends <CARD:filter />, which causes an exception.
2016-08-24 17:45:10 +02:00
Unrud
469efbb032 Cosmetics 2016-08-13 04:52:51 +02:00
Unrud
453a8ba636 Fix "fix this" in xmlutils 2016-08-13 04:51:42 +02:00
Unrud
ecd0a16214 Remove unused variable path 2016-08-13 04:48:59 +02:00
Unrud
1c6e626979 Simplify name_from_path and add error check 2016-08-13 04:47:35 +02:00
Guillaume Ayoub
3b29a56c81 Merge pull request #480 from Unrud/currentuserprincipal
Ask for authentication if current-user-principal is requested
2016-08-13 04:25:55 +02:00
Unrud
c29fd1ca61 Check that item is a collection 2016-08-13 00:19:14 +02:00
Unrud
cf4a6ef749 Revert 1ffc171f35
Maybe I misunderstand the RFC, but this properties are related to a principal collection. DAVdroid without preemptive authentication doesn't like this and tries to create calendars and addressbooks in /.
2016-08-13 00:17:50 +02:00
Unrud
4438d2ba9a Require user for current-user-principal
DAVdroid dropped support for preemptive authentication in version 1.2.3.
Returning the DAV:unauthenticated pseudo-principal as specified in RFC 5397 doesn't seem to work for DAVdroid.
2016-08-12 23:41:34 +02:00
Unrud
6515062bcd Return HTTP status in xmlutils.propfind 2016-08-12 23:34:08 +02:00
Florian Mounier
c95437367f This is very important 2016-08-12 15:05:05 +02:00
Florian Mounier
416f9ddef1 Add an upload_all method for subsequent optimizations. 2016-08-12 14:58:32 +02:00
Guillaume Ayoub
8d863e52b2 Re-enable properties storage on al collections
Fix #475.
2016-08-11 12:07:19 +02:00
Guillaume Ayoub
d3d29802ad Merge pull request #474 from Unrud/patch-31
PROPFIND rights checking
2016-08-11 11:44:43 +02:00
Guillaume Ayoub
e66a35e996 Merge pull request #476 from Unrud/closelockfile
Add option to close lock file
2016-08-11 11:43:40 +02:00
Guillaume Ayoub
f395e256ff Merge pull request #478 from Unrud/patch-33
Correctly write line endings to files
2016-08-11 11:43:18 +02:00
Unrud
9e84b459ae Correctly write line endings to files
vobject uses \r\n as line endings. Writing this to a file is not a problem on Linux and newer versions of MacOS. On Windows \r\r\n gets written to disk and on older versions of MacOS \r\r gets written to disk, because python replaces \n by the system depended line ending.
2016-08-11 05:43:18 +02:00
Unrud
7a01f905de Enable close_lock_file for tests 2016-08-11 05:20:31 +02:00
Unrud
3f5dd70580 Add option to close lock file
Close the lock file, when no more clients are waiting.
This option is not very useful in general, but on Windows files that are opened cannot be deleted. This causes tests to fail, because the deletion of the temporary filesystem folder fails.
2016-08-11 05:19:23 +02:00
Unrud
0060130c3b Remove etags from raw data
Remove all etags that are directly calculated from data that's read from files.
1. They are not used anywhere (luckily).
2. Etags that are send to clients are calculated from the output of vobject's serialize method. If files are edited externally and vobject normalizes them (like wrapping long lines or replacing all line endings by \r\n), the etags that are sent to the client and the etags that are calculated from raw data will never match. If a new version of vobject is released and the formatting changes slightly, the checks will also always fail.
2016-08-11 05:05:10 +02:00
Guillaume Ayoub
35d12ee97e Merge pull request #472 from Unrud/patch-30
Use os.replace instead of os.rename
2016-08-11 04:23:56 +02:00
Guillaume Ayoub
69386410e5 Merge pull request #473 from Unrud/tests
Tests
2016-08-11 04:23:23 +02:00
Unrud
4eb04e3526 PROPFIND rights checking
Return 404 and 403 only when it's appropriate. Don't ask users for passwords if an item just doesn't exist (e.g. mistyped URL).
2016-08-11 02:19:48 +02:00
Unrud
30b3273efa Test that the requests fails if the hook fails 2016-08-11 00:37:19 +02:00
Unrud
2b45cffa0e Test that hook gets executed when the principal collection is created
Test for ee5b8facda
2016-08-11 00:37:19 +02:00
Unrud
080ed31d27 Test that storage is locked when hook runs
Test for 65af0592d3
2016-08-11 00:37:19 +02:00
Unrud
952609deee Test that hook gets executed on write accesses 2016-08-11 00:37:19 +02:00
Unrud
893051645e Test fsync
Enable syncing for at least one test.
Test for 5c2075cb6c.
2016-08-11 00:37:19 +02:00
Unrud
6d80b70b8c Test that the root collection always exists
Test for 6c3e59fd11
2016-08-11 00:37:19 +02:00
Unrud
97edacd71a Test implicit creation of principal collection
Test for 81b04890f1
2016-08-11 00:37:19 +02:00
Unrud
62892e3423 Test PROPPATCH 2016-08-11 00:37:13 +02:00
Unrud
51bf95f00d Don't run all tests twice
Only verify that custom backend loading works with a simple test.
2016-08-11 00:32:24 +02:00
Unrud
c8e8993ec2 Refactor: Move common code into BaseFileSystemTest 2016-08-11 00:32:24 +02:00
Unrud
e2b87d145f Cosmetics: Don't use % for logging 2016-08-10 23:43:32 +02:00
Unrud
9192a7751b Remove incorrect argument
In rare cases this can cause a crash.
2016-08-10 23:41:19 +02:00
Unrud
b8126f8d24 Use os.replace instead of os.rename
On Windows os.replace sets the MOVEFILE_REPLACE_EXISTING flag for MoveFileEx.
On POSIX it's the same as os.rename.
2016-08-10 19:26:07 +02:00
Guillaume Ayoub
5c2075cb6c Fix _atomic_write 2016-08-08 14:55:01 +02:00
Guillaume Ayoub
5e5b8b844f Cosmetics 2016-08-08 13:39:01 +02:00
Guillaume Ayoub
1e5c9f63a0 Merge pull request #468 from Unrud/disablefsync
Add option to disable syncing to disk
2016-08-08 13:00:12 +02:00
Guillaume Ayoub
c4cf918bf2 Merge pull request #470 from Unrud/readcontent
Read content after access checks
2016-08-08 12:57:59 +02:00
Unrud
a9b89be5c7 Read content after access checks
Unauthorized users can't fill up RAM with crap anymore.
2016-08-08 07:00:24 +02:00
Unrud
f294b1cf17 Add access check to PROPFIND 2016-08-08 06:59:15 +02:00
Unrud
eb15de0c5b Test PUT with whole collection 2016-08-08 06:09:24 +02:00
Unrud
68286faa63 Atomic replacement of whole collection by PUT 2016-08-08 06:08:52 +02:00
Unrud
0675328a02 Replace collection in Collection.create_collection 2016-08-08 06:08:01 +02:00
Unrud
6d85a731e5 Disable syncing to disk for tests
This reduces test time by almost 70%.
2016-08-08 05:30:16 +02:00
Unrud
f5f52582a1 Add option to disable syncing to disk
Disabling syncing increases the risk of data loss when the system crashes or power fails. On the positive it can increase the performance to a great extent.
2016-08-08 05:20:25 +02:00
Unrud
c336e0581e Remove atomicwrites
Unfortunately the library doesn't support disabling of disk syncing, fortunately we only need a small subset of it's functionality which is easy to implement.
2016-08-08 05:02:36 +02:00
Unrud
3c736cade8 Refactor: Move sync_directory into Collection class
This is not used anywhere else.
2016-08-08 04:07:01 +02:00
Guillaume Ayoub
9f2cbb81a3 Merge pull request #466 from Unrud/fixpath
Set correct path for child collections
2016-08-07 18:43:41 +02:00
Unrud
ce0a2fd01d Test PROPFIND
Regression test for cfa8c7d8b4
2016-08-07 18:08:10 +02:00
Unrud
cfa8c7d8b4 Set correct path for child collections 2016-08-07 17:50:31 +02:00
Unrud
4f37e90e20 Some clients expect collections to end with /
Compatibility with InfCloud/CalDavZAP/CardDavMATE
2016-08-07 17:50:04 +02:00
Unrud
ee5b8facda Always use wrapper to lock collection
Also run the hook after creation of the principal collection.
2016-08-07 17:14:47 +02:00
Guillaume Ayoub
4236077b04 Document _makedirs_synced and remove exist_ok 2016-08-06 14:08:21 +02:00
Guillaume Ayoub
4549d1b2db Merge pull request #462 from Unrud/durabledirs
Durable creation of directories and make sure that the root colleciton exists.
2016-08-06 14:02:41 +02:00
Guillaume Ayoub
a7923008ce Remove unused import 2016-08-06 13:29:07 +02:00
Guillaume Ayoub
0cda9f611d Merge pull request #463 from Unrud/atomicmove
Atomic MOVE
2016-08-06 13:27:38 +02:00
Guillaume Ayoub
071a829af8 Merge pull request #453 from Unrud/delete
Delete atomic and durable
2016-08-06 12:52:38 +02:00
Unrud
5f66d009d6 Atomic MOVE in multifilesystem 2016-08-06 05:09:06 +02:00
Unrud
23582c8208 Expose low level MOVE operation in storage.BaseCollection 2016-08-06 05:09:00 +02:00
Unrud
17ff22cae4 Support replacing in MOVE method 2016-08-06 04:45:44 +02:00
Unrud
89ac2fb397 Remove faulty check
This should have been (to_path.strip("/")+"/").startswith(path.strip("/")+"/").
But it's not required as we don't support moving collections.
2016-08-06 04:44:18 +02:00
Unrud
07dc71fd73 Update comment 2016-08-06 04:07:55 +02:00
Unrud
6c3e59fd11 Make sure that the root collection exists.
Since the collections are not directly in **filesystem_path** anymore,
the folder is not created by ``Collection.acquire_lock``.
2016-08-06 04:07:55 +02:00
Unrud
05a4285f54 Durable creation of intermediate directories 2016-08-06 04:07:50 +02:00
Guillaume Ayoub
9aefc500ec Merge pull request #461 from Unrud/patch-27
Remove old code
2016-08-05 17:48:03 +02:00
Unrud
bfb7aec7be Test deletion of root collection 2016-08-05 17:40:47 +02:00
Unrud
f4eb143ba8 use tempfile to delete collection 2016-08-05 17:40:47 +02:00
Unrud
5a9d956b49 delete atomic and durable
See #440
2016-08-05 17:40:47 +02:00
Unrud
9dd241a54b Add test for deletion of collection 2016-08-05 17:40:47 +02:00
Unrud
6d77e24028 Remove old code
This was missed while merging #457 and #459.
2016-08-05 17:05:32 +02:00
Unrud
65af0592d3 Run hook while storage is still locked 2016-08-05 16:58:03 +02:00
Guillaume Ayoub
50438bc2c0 Remove fixed TODOs 2016-08-05 02:57:17 +02:00
Guillaume Ayoub
8682504c6e Strip empty lines from content 2016-08-05 02:25:15 +02:00
Guillaume Ayoub
26e1c9ba89 Fix collection creation with PUT request 2016-08-05 02:24:52 +02:00
Guillaume Ayoub
8ac3ce1a89 Clean many, many things 2016-08-05 02:14:49 +02:00
Guillaume Ayoub
92a0027ae1 Merge branch 'rights' of https://github.com/Unrud/Radicale into Unrud-rights 2016-08-04 23:35:01 +02:00
Guillaume Ayoub
2eaedf448f Merge pull request #457 from Unrud/atomiccreate
Atomic creation of collections and atomic PROPPATCH
2016-08-04 22:55:15 +02:00
Unrud
8ce6d1af30 Use flock locks for storage locking
These locks are compatible with the command line utility flock,
which comes preinstalled with most Linux distributions.
2016-08-04 06:15:05 +02:00
Unrud
066b5994d1 Improve rights checking and request handlers
* Access rights are checked before the storage is locked and
    collections are loaded.
  * DELETE sends 410 instead of doing nothing or crashing if the target
    doesn't exist.
  * GET always returns 404 if the target doesn't exist.
  * GET doesn't crash if a collection without tag property is requested.
  * MKCOL and MKCALENDAR send 409 if the target already exists.
  * MOVE checks if the target collection of an item actually exists and
    sends 409 otherwise.
  * PUT doesn't crash if a whole collection that doesn't exist yet is
    uploaded and ``content-type`` is ``text/vcard`` or
    ``text/calendar``.
  * PUT distinguishes between simple items and whole collections by the
    following criteria: Target is a collection; Parent exists; Parent
    has the tag property set; Parent contains other items. Before only
    the first two criteria where used, which was very unrelieable. #384
  * PROPPATCH is only allowed on collections and 409 is send otherwise.
  * ``Rights.authorized`` takes a path instead of a collection.
  * ``Collection.discover`` only returns items in ``path``, that
    actually exist. #442
2016-08-04 06:08:08 +02:00
Unrud
ae89082c24 Atomic creation of collections 2016-08-03 15:50:55 +02:00
Unrud
e34d1c46cd Move collections into collection-root folder
This is required for atomic creation and deletion of the "/" collection.
2016-08-03 15:50:38 +02:00
Unrud
bd7641699e Atomic PROPPATCH 2016-08-03 14:45:52 +02:00
Unrud
de510148a0 *args and **kwargs for test collection 2016-08-03 14:35:50 +02:00
Unrud
0fc7f787a8 Remove test_folder configuration
It's not used.
2016-08-03 14:34:36 +02:00
Guillaume Ayoub
b71664b322 Return UNAUTHORIZED for NOT_FOUND PROPFINDs 2016-08-02 17:24:04 +02:00
Guillaume Ayoub
76b859c28e Rename .collection.props into .Radicale.props 2016-08-02 16:58:44 +02:00
Guillaume Ayoub
2f202d14e0 Fix .collection.props 2016-08-02 16:57:20 +02:00
Guillaume Ayoub
5b04ba18a8 Hide collection.props 2016-08-02 16:51:50 +02:00
Guillaume Ayoub
da22778ce3 Merge pull request #456 from Unrud/props
Properties inside of collection
2016-08-02 16:50:23 +02:00
Unrud
13c693ba35 Properties inside of collection
* Creation and deletion of collections can be atomic.
  * The properties file of the root collection is not outside of the
    filesystem_folder.
  * It's easier to delete and move collections by hand.
  * This breaks backward compatibility.
2016-08-02 16:35:38 +02:00
Guillaume Ayoub
1ffc171f35 Always return collections home sets 2016-08-02 16:27:18 +02:00
Guillaume Ayoub
5ed60ce09d Always return current-user-principal 2016-08-02 15:43:31 +02:00
Guillaume Ayoub
3e52f34309 Remove pylint 2016-08-02 14:39:20 +02:00
Guillaume Ayoub
301bb552d7 Cosmetics 2016-08-02 14:37:39 +02:00
Guillaume Ayoub
d322d3f394 Clean the user's collection creation code 2016-08-02 14:00:42 +02:00
Guillaume Ayoub
04010ff8d3 Merge pull request #455 from Unrud/home
Creating addressbooks and calendars in DAVdroid
2016-08-02 13:51:29 +02:00
Guillaume Ayoub
71be1a56b8 Change find_available_file_name into private method 2016-08-02 12:11:38 +02:00
Guillaume Ayoub
a7f078eb54 Change find_available_file_name into a method 2016-08-02 11:16:24 +02:00
Guillaume Ayoub
880744ada7 Merge pull request #454 from Unrud/uniq
Check if file name already exists
2016-08-02 11:12:30 +02:00
Unrud
81b04890f1 Create principal collection automatically 2016-08-02 08:04:12 +02:00
Unrud
39d38f36a5 Check if file name already exists
The chances are pretty low but maybe the RNG is bad or something
2016-08-02 07:33:47 +02:00
Unrud
d5008672c5 Principal associated properties only on principal collections
This misguides DAVdroid into creating new calendars and addressbooks in /
2016-08-01 20:48:57 +02:00
Unrud
03cbcee5cd / is not a principal 2016-08-01 20:46:57 +02:00
Unrud
7aa481aaa1 Return / for principal-collection-set
From RFC3744: This protected property of a resource contains a set of URLs that identify the root collections that contain the principals that are available on the server that implements this resource.
2016-08-01 20:44:04 +02:00
Unrud
8f91190949 Remove duplicate code 2016-08-01 20:42:03 +02:00
Guillaume Ayoub
6b30870be5 Minor cleanups
Everything works fine with Apple clients now.
2016-08-01 19:00:57 +02:00
Guillaume Ayoub
b517818749 Don't reject everybody from "/" with owner_only
Fix 407.
2016-08-01 18:59:47 +02:00
Guillaume Ayoub
6bfdcbafec Cosmetics 2016-08-01 12:50:51 +02:00
Guillaume Ayoub
711ecf5df2 Merge pull request #451 from Unrud/removewellknown
Remove /.well-known
2016-08-01 12:20:55 +02:00
Guillaume Ayoub
9d3086427d Merge pull request #450 from Unrud/safeusernames
Prevent unsafe usernames
2016-08-01 12:14:40 +02:00
Unrud
9dd8c65d65 Always match full username/collection with regex
It's easy to forget $ at the end of a regex and it's counter-intuitive that ^ is implicit but $ is not.
2016-08-01 10:07:21 +02:00
Unrud
fd977891e8 Remove /.well-known
I can't think of a sane use-case for this.
2016-08-01 09:31:25 +02:00
Unrud
da1a693620 Prevent unsafe usernames
If an attacker is able to create an account with a username like "user/calendar.ics", he can access collections of other users.
2016-08-01 09:10:23 +02:00
Guillaume Ayoub
b3d8833779 Normalize the version number 2016-07-30 16:43:29 +02:00
Guillaume Ayoub
dc406c17fd Merge pull request #425 from Unrud/patch-19
Don't silently drop files
2016-07-30 15:28:35 +02:00
Guillaume Ayoub
62588477f6 Merge pull request #429 from Unrud/hook
Add hook for storage changes
2016-07-30 15:26:17 +02:00
Guillaume Ayoub
0a2d12a4a3 Merge pull request #445 from Unrud/patch-24
Point well-known to /
2016-07-30 15:25:01 +02:00
Unrud
0306ee6dcc Point well-known to /
Fixes #431
2016-07-14 10:13:20 +02:00
Unrud
21d7d5a453 Hide temporary files
Fixes #443
2016-07-14 09:09:10 +02:00
Unrud
0a32e46295 Improve error message 2016-07-14 08:08:08 +02:00
Unrud
e3d7d08eab Don't silently drop files 2016-07-14 08:08:08 +02:00
Unrud
0263251ecf Add hook for storage changes 2016-07-14 07:57:46 +02:00
Guillaume Ayoub
ef63865e31 Merge pull request #428 from Unrud/patch-22
Add timeout to connections, limit size of request body and limit number of parallel connections
2016-07-14 02:06:24 +02:00
Guillaume Ayoub
5bd80d8d13 Don't crash when getting unknown collections
Fix #422.
2016-07-14 01:39:57 +02:00
Guillaume Ayoub
4c91ee8906 Atomic writes (fix #440) 2016-07-14 01:14:42 +02:00
Guillaume Ayoub
5e5427f987 Cosmetics 2016-07-13 17:59:52 +02:00
Florian Mounier
eb1f964ee2 Fix docstring 2016-07-12 18:12:42 +02:00
Florian Mounier
9225fd5fbd Add a test for update 2016-07-12 18:08:01 +02:00
Florian Mounier
6f9e9f21dd Merge branch 'optimize_storage_collection' 2016-07-08 15:35:43 +02:00
Florian Mounier
2ff47620f8 Merge branch 'date_indexed_collection' 2016-07-08 11:39:15 +02:00
Florian Mounier
36333765d6 Merge branch 'test_in_radicale' 2016-07-08 11:38:09 +02:00
Florian Mounier
39823f8909 Add a pre_filtered_list method in collection. This allow filters optimizations 2016-07-08 11:37:30 +02:00
Florian Mounier
a2d6977cd6 Fix logic in loops 2016-07-07 17:53:35 +02:00
Florian Mounier
10e7a776fc Merge branch 'master' into optimize_storage_collection 2016-07-07 17:52:16 +02:00
Guillaume Ayoub
8c225f019c Fix support of recurring events 2016-07-07 17:49:56 +02:00
Florian Mounier
364ed3689d Optimise collection creation by avoiding nested_loop 2016-07-07 16:13:32 +02:00
Florian Mounier
9056561211 Move test inside radicale 2016-07-07 14:30:10 +02:00
Guillaume Ayoub
21461ddb4e Fix name_from_path 2016-07-06 17:11:12 +02:00
Guillaume Ayoub
6a4fe6beb5 Add a very, very important full stop. 2016-07-05 18:07:36 +02:00
Florian Mounier
a7549bc652 Split the main run function to allow the use of radicale serving programatically. Add an extra_config parameter to the config load to override config. 2016-07-05 17:50:40 +02:00
Florian Mounier
383409213e deflate seems to be problematic with different implementations (http://stackoverflow.com/questions/388595/why-use-deflate-instead-of-gzip-for-text-files-served-by-apache/388633#388633). Using gzip instead. 2016-07-04 17:00:43 +02:00
Guillaume Ayoub
9300d25d61 Update __main__.py 2016-07-04 14:35:38 +02:00
Florian Mounier
221379ef85 Sort imports 2016-07-04 14:32:33 +02:00
Guillaume Ayoub
fd3b0718fd Fix coding style 2016-07-01 16:44:12 +02:00
Guillaume Ayoub
c294477aee Support recurring items in time filters
Fix #33.
2016-07-01 16:40:43 +02:00
Guillaume Ayoub
5b5edaac2f Fix FCGI and WSGI scripts 2016-07-01 10:28:51 +02:00
Guillaume Ayoub
4e8f518cbb Remove spaces from empty lines 2016-06-26 21:23:29 +02:00
Nicolas Bonfante
dfc215b63f solving bug when trying to filter an Event on a DATETIME which have no timezone 2016-06-24 14:02:35 +02:00
Nicolas Bonfante
4872ea5d58 correcting bug in test vjournal 2016-06-15 18:09:09 +02:00
Cedric Boscher
e4e1d81f9f debug on tests 2016-06-15 18:01:19 +02:00
Nicolas Bonfante
1613c4955f adding test for Vjournal filtering 2016-06-15 16:17:51 +02:00
Nicolas Bonfante
38845da762 solve bug in vjournal time filter 2016-06-15 15:48:35 +02:00
Cedric Boscher
a5d5cc8b2c debug VTODO and first tests running 2016-06-15 15:45:27 +02:00
Cedric Boscher
2957b40473 clean code 2016-06-15 10:16:44 +02:00
Cedric Boscher
21ea648a44 Merge branch 'master' of github.com:Kozea/Radicale 2016-06-15 09:56:16 +02:00
Cedric Boscher
7de63f8335 VTODO first implementation 2016-06-15 09:56:05 +02:00
Nicolas Bonfante
e1f3045f1f adding VJournal method 2016-06-15 09:55:30 +02:00
Guillaume Ayoub
40406359e5 Merge pull request #423 from Unrud/patch-17
Resolve naming conflict
2016-06-13 15:08:33 +02:00
Guillaume Ayoub
9592ec3a66 Merge pull request #424 from Unrud/patch-18
Fix time range matching
2016-06-13 15:08:01 +02:00
Guillaume Ayoub
caa4c16dfd Merge pull request #426 from Unrud/patch-20
Ignore hidden files
2016-06-13 15:07:24 +02:00
Unrud
83ea9da2b4 Limit number of parallel connections 2016-06-11 13:19:26 +02:00
Unrud
e438d9fd4b Limit size of request body 2016-06-11 13:16:45 +02:00
Unrud
b55d2181ed Add timeout to integrated sever 2016-06-11 13:14:58 +02:00
Unrud
d4e6205745 Don't include passwords in logs 2016-06-11 12:58:28 +02:00
Unrud
54b47c4a3e Refactor: Move response code into function 2016-06-10 14:55:32 +02:00
Unrud
39379413d1 Use hidden file for locking 2016-06-10 01:18:02 +02:00
Unrud
3479e76690 Ignore hidden files 2016-06-10 01:17:57 +02:00
Unrud
3e1e680bbc Use correct attribute name 2016-06-10 00:02:07 +02:00
Unrud
74d84e0c91 Resolve naming conflict 2016-06-09 23:52:05 +02:00
Guillaume Ayoub
063e827588 Revert "Try to use UID as filename"
This reverts commit 0b25c82d9d.

See #419.
2016-05-30 19:05:58 +02:00
Guillaume Ayoub
f1f716b0c7 Merge pull request #419 from Unrud/patch-16
Save all items with the same UID in the same file
2016-05-30 19:03:25 +02:00
Guillaume Ayoub
5b6f0784d0 Merge branch 'master' of github.com:Kozea/radicale 2016-05-30 14:53:41 +02:00
Guillaume Ayoub
248fc7e9e3 Implement time-range filters for events 2016-05-30 14:53:20 +02:00
Guillaume Ayoub
13a7f2f9af Merge pull request #417 from Unrud/patch-14
Allow creation of empty collection via PUT
2016-05-30 11:23:27 +02:00
Guillaume Ayoub
b0ed18af05 Merge pull request #416 from Unrud/patch-13
Always release lock
2016-05-30 11:08:48 +02:00
Unrud
0b25c82d9d Try to use UID as filename 2016-05-29 03:38:35 +02:00
Unrud
5c90f5b2af Save all items with the same UID in the same file
If recurrences are not in the same file, they are not correctly shown by clients.
2016-05-29 03:32:06 +02:00
Unrud
4861b79878 Allow creation of empty collection via PUT 2016-05-29 01:18:29 +02:00
Unrud
af1dce1504 Fix crash on unknown content type 2016-05-28 23:49:15 +02:00
Unrud
28e643dec1 Don't pass None to vobject.readComponents
If an empty collections is created with PUT, content is None.
2016-05-28 22:46:20 +02:00
Unrud
9ade92c026 Always release lock 2016-05-28 22:36:40 +02:00
Guillaume Ayoub
656680d998 Merge branch 'master' of github.com:Kozea/radicale 2016-05-27 14:45:43 +02:00
Guillaume Ayoub
fef9f0abc6 Support param-filter 2016-05-27 14:44:59 +02:00
Unrud
ecbffe69dc Veify Authorization Scheme 2016-05-26 12:21:09 +02:00
Guillaume Ayoub
da1363f026 Revert "Limit duration of file locks"
This reverts commit 6b1acd14d7.
2016-05-25 14:05:34 +02:00
Guillaume Ayoub
69ec2891fa Remove at_once 2016-05-25 14:05:05 +02:00
Guillaume Ayoub
a3c32ee77f Merge pull request #402 from Unrud/locking
Implement locking of whole storage
2016-05-25 14:03:48 +02:00
Guillaume Ayoub
4fc5e3135a Update documentation of path_to_filesystem 2016-05-24 14:39:41 +02:00
Guillaume Ayoub
f8c8bd9d9b Merge pull request #403 from Unrud/patch-9
Don't sanitize local paths using posixpath
2016-05-24 14:36:34 +02:00
Unrud
6b1acd14d7 Limit duration of file locks
This prevents starvation of writers in other processes
2016-05-22 23:44:21 +02:00
Unrud
14daa88772 Use FIFO for storage locking
This prevents starvation of writers in the current process
2016-05-22 23:29:00 +02:00
Unrud
1ea9a33101 Reuse lock file 2016-05-22 10:29:56 +02:00
Unrud
49bc0728e3 Only one lock file per process (lockf() works now)
lockf() is more portable than flock()
2016-05-22 10:29:56 +02:00
Unrud
eb9218354c Always use readers-writer lock in storage locking 2016-05-22 10:29:56 +02:00
Unrud
bca6cec6b3 Use context manager for locking 2016-05-22 10:29:50 +02:00
Unrud
a24613da9c Compress answer
The protocol uses verbose XML and compression reduces the size significantly.
2016-05-21 02:26:03 +02:00
Unrud
de2f411820 Use nonlocal instead of container
Python 3
2016-05-21 01:49:22 +02:00
Unrud
b810d61ce3 Don't sanitize local paths using posixpath
This doesn't work as expected on Windows.
2016-05-21 01:41:00 +02:00
Unrud
ff3b31fed6 Use threading in integrated webserver 2016-05-21 01:26:52 +02:00
Unrud
2c45b1998c Implement locking of whole storage 2016-05-21 01:26:45 +02:00
Guillaume Ayoub
68b72f55eb Merge pull request #398 from untitaker/unbound
Fix UnboundLocalError
2016-05-18 22:47:37 +02:00
Markus Unterwaditzer
eea6ccb573 Fix UnboundLocalError 2016-05-18 22:43:56 +02:00
Guillaume Ayoub
a8fda1aedf Cut long lines 2016-05-18 22:41:05 +02:00
Guillaume Ayoub
6769629314 Remove useless empty function 2016-05-18 20:22:36 +02:00
Guillaume Ayoub
45576d7474 Handle text-match filters
Related to #33.
2016-05-18 20:21:03 +02:00
Guillaume Ayoub
20ff5444fb Don't explicitely inherit from object 2016-05-12 18:57:59 +02:00
Guillaume Ayoub
ca056dea9f Don't return 404 for GET requests on collections 2016-05-12 18:55:03 +02:00
Guillaume Ayoub
2ce9fceaff Merge branch 'master' of github.com:Kozea/radicale 2016-05-06 17:57:58 +02:00
Guillaume Ayoub
a28df4dd4b Reorganize filters
Related to #33 and #372.
2016-05-06 17:53:02 +02:00
Markus Unterwaditzer
2dee66133d Flake8 fixes 2016-05-04 19:25:58 +02:00
Markus Unterwaditzer
0de3ad36be Fixes to Rights
- BaseRights expects the config and logger params
- user may be None, which leads to errors when trying to use it with
  regexes.
2016-04-22 20:30:40 +02:00
Guillaume Ayoub
2f97d7d1e1 Remove global state about configuration and logs
Many things have been changed to make this possible, probably leading to
many hidden bugs waiting to be found.

Related to #122.
2016-04-22 11:37:02 +09:00
Jasper Bryant-Greene
0670aa9fb4 Corrected calendar-timezone code in xmlutils.py 2016-04-21 10:40:36 +05:30
Guillaume Ayoub
6db946080e Cosmetics 2016-04-21 09:12:00 +09:00
Markus Unterwaditzer
7f2d1c00c4 Unbreak tag filters 2016-04-20 20:17:05 +02:00
Guillaume Ayoub
303a53eede Return Items in upload and update methods
Related to #380
2016-04-20 08:09:00 +09:00
Guillaume Ayoub
ecf53c5e1e Merge branch 'master' of github.com:Kozea/radicale 2016-04-20 07:50:58 +09:00
Guillaume Ayoub
3a9bcc7555 Add etag property to items
Related to #380.
2016-04-20 07:49:03 +09:00
Markus Unterwaditzer
1b1ba421ff Fix double slash in REPORT responses
When doing REPORTs with absolute paths as hrefs, the response hrefs
contain a double slash at the beginning. This breaks URL parsers and
makes them assume they have a URL without protocol of the format
`//example.com/foo/bar/`.
2016-04-19 23:19:22 +02:00
Guillaume Ayoub
bf8bd90bcb Fix removal of base_prefix in multiget requests 2016-04-19 10:44:02 +09:00
Guillaume Ayoub
6adc7f5fed Enhance collection discovering
When the request path leads to a non-existing item, try to create the
Collection object according to an existing collection at request path's
parent.

This change means that the requests whose path leads to a collection
that doesn't exist (at least MKCOL, MKCALENDAR and PUT) need to rely on
the request path more than on the Collection path. It was already done
for PUT, it's been fixed for MKCOL and MKCALENDAR.

Fix #378.
2016-04-19 10:39:52 +09:00
Guillaume Ayoub
65659fc909 Improve WebDAV compatibility
Add getlastmodified and getcontentlength properties, and fix nested
collections support. Fix #321.
2016-04-18 09:11:00 +09:00
Guillaume Ayoub
99544fcf80 Allow the creation of empty collections
Fix #201
2016-04-17 13:58:56 +09:00
Markus Unterwaditzer
e8c1defe6a Update PROPPATCH to new storage API 2016-04-13 23:02:00 +02:00
Markus Unterwaditzer
472d016d1e Fix crash when fetching nonexistent href 2016-04-13 22:56:57 +02:00
Markus Unterwaditzer
f169f2f19b Don't crash if collection doesn't exist yet 2016-04-13 22:09:00 +02:00
Markus Unterwaditzer
a1cdcf2fba Don't crash if propsfile doesn't exist 2016-04-12 22:43:10 +02:00
Guillaume Ayoub
e586569b31 Fix a lot of details 2016-04-12 18:21:18 +02:00
Guillaume Ayoub
406027f3c9 Change the Collection API
The new API used comes from vdirsyncer, as proposed by @untitaker in
issue #130.

The code has been tested and works with the (too simple) unit tests, and
with Lightning and DAVdroid. Many things are broken and a good part of
the code has not be ported to the new API yet. TODOs have been added
where the application is known to be broken.
2016-04-11 20:11:35 +02:00
Guillaume Ayoub
2408097ab9 Clean the storage module 2016-04-10 02:37:43 +02:00
Guillaume Ayoub
41e319a8b8 Merge ical and storage modules 2016-04-10 02:08:07 +02:00
Guillaume Ayoub
73d39ea572 Use vobject 2016-04-10 01:36:45 +02:00
Guillaume Ayoub
b495bfa59f Remove pathutils 2016-04-09 22:45:14 +02:00
Guillaume Ayoub
12ddd64884 Fix the management of paths 2016-04-09 22:44:34 +02:00
Guillaume Ayoub
7a0e267f19 Better collection discovery 2016-04-09 15:11:47 +02:00
Guillaume Ayoub
44ba2c36a7 Merge branch 'master' of https://github.com/hadleyrich/Radicale 2016-04-08 15:05:56 +02:00
Guillaume Ayoub
7e493f73cd Remove backslash 2016-04-08 14:46:38 +02:00
Guillaume Ayoub
e2b6bc3008 Remove old workaround 2016-04-08 14:46:17 +02:00
Guillaume Ayoub
54dee0c7c4 Clean tests 2016-04-07 19:25:10 +02:00
Guillaume Ayoub
595e2329ea Don't create collections on GET requests 2016-04-07 19:03:27 +02:00
Guillaume Ayoub
1001bcb676 Remove extra auth, rights and storage modules 2016-04-07 19:02:52 +02:00
Guillaume Ayoub
434cb533e9 Remove Python 2 support 2016-03-31 19:57:40 +02:00
Guillaume Ayoub
fa4eaef08e Merge pull request #353 from Unrud/patch-7
Integrated server without busy waiting
2016-03-31 19:24:43 +02:00
Guillaume Ayoub
f27ed8e6ff Merge pull request #363 from igogold/readonly-collections
Fix privilege set for read only collection
2016-03-31 19:23:47 +02:00
Guillaume Ayoub
2ea35a2fc3 Merge pull request #209 from vuntz/no-autocreate-multifilesystem
Do not autocreate .props files for multifilesystem backend
2016-03-10 18:48:29 +01:00
igogold
aa04aa04b7 Fix privilege set for read only collection 2016-03-04 11:05:13 +05:00
Unrud
bbe71c1ad1 Integrated server without threads and busy waiting 2016-01-27 07:17:38 +01:00
Guillaume Ayoub
3a4184d1ab Merge pull request #351 from Unrud/patch-6
Quick fix for multifilesystem
2016-01-15 10:54:47 +01:00
Guillaume Ayoub
060d265129 Merge branch 'master' of github.com:Kozea/radicale 2016-01-15 10:51:24 +01:00
Guillaume Ayoub
9a2668e425 Fix the Collection._parse docstring 2016-01-15 10:50:36 +01:00
Unrud
a55cff8eb6 Also remove items from the collections itself 2016-01-15 01:13:18 +01:00
Unrud
5081fcbcd1 Use component names to filter duplicates 2016-01-15 01:09:43 +01:00
Unrud
6be7dab03f Correct function name 2016-01-14 23:07:53 +01:00
Guillaume Ayoub
f8b068e9fe Version 1.1.1 2016-01-07 23:31:19 +01:00
Guillaume Ayoub
83304c1378 Stupid me, that was PEP 20 (fix 347 for Python 2 too) 2016-01-06 21:44:20 +01:00
Guillaume Ayoub
620d9f8316 Readability counts - PEP8™ (fix #347) 2016-01-06 20:19:12 +01:00
Guillaume Ayoub
e47b50421e Version 1.1 2015-12-31 12:51:23 +01:00
Guillaume Ayoub
e7ce00d54f Style 2015-12-31 12:49:41 +01:00
Guillaume Ayoub
b484d42547 Merge pull request #335 from Kozea/permissions
Use the first matching section for getting rights
2015-12-31 11:30:29 +01:00
Guillaume Ayoub
20960bee84 Merge pull request #339 from Unrud/patch-2
Improve daemonization
2015-12-24 16:00:39 +01:00
Unrud
eed37792ae Convert filesystem paths safely to paths
This only becomes a problem if the OS/filesystem
allows / in filenames or . respectively
.. as filenames.
2015-12-24 14:39:29 +01:00
Unrud
bcaf452e51 Convert component names safely to filenames
Component names are controlled by the user and
without this checks access to arbitrary files is
possible if the multifilesystem backend is used.
2015-12-24 14:39:29 +01:00
Unrud
b4b3d51f33 Convert paths safely to file system paths
With the old implementation on Windows a path like
"/c:/file/ignore" got converted to "c:\file" and
allowed access to files outside of FOLDER
2015-12-24 14:39:29 +01:00
Unrud
6b7e79a368 Use sanitize_path instead of normpath
See a7b47f075499a1e1b40539bc1fa872a3ab77a204
The check for "." is now needless because the sane
path is always absolute.
```path.replace(os.sep, "/")``` is only relevant
for the (multi)filesystem backend and should be
there.
2015-12-24 14:39:24 +01:00
Unrud
1ad994cadf Move sanitize_path into pathutils.py 2015-12-24 14:39:15 +01:00
Unrud
ed44830447 Error message if path not starting with prefix
Before the program crashed implicitly
2015-12-24 14:32:21 +01:00
Unrud
780cecc0f2 Always sanitize request URI
Do no rely on the HTTP server
2015-12-24 14:32:21 +01:00
Unrud
ee095a463d Improve URI sanitation
The old implementation failed to sanitize URIs
like ".", "..", "../.." or "//"
2015-12-24 14:32:21 +01:00
Unrud
592537e37c Introduce naming scheme for request handlers
The do_ prefix and upper case name allows easy
distinction between methods that handle requests
and other methods.
Without this distinction an attacker could
call arbitrary methods.
Currently there is no method that matches the
argument count, but that's easy to miss when new
methods are added.
2015-12-24 07:22:55 +01:00
Unrud
4bfe7c9f79 Prevent "regex injection"
If an attacker is able to authenticate with a user name like .* he can bypass limitations imposed by "owner_write" and "owner_only".
2015-12-23 07:05:20 +01:00
Unrud
7cb31fe22b Improve regex for Well-Known URIs
Example to show the problem:
/Xwell-known/carddavXX
2015-12-22 12:44:19 +01:00
Unrud
367ca6fcbf Replace standard file descriptors of daemon
Overwriting ```sys.stdout``` and ```sys.stderr``` is not sufficient.
(e.g. the logger still uses the old file descriptors)
2015-12-22 08:50:16 +01:00
Unrud
ecb8ad747e Decouple the daemon from its parent environment 2015-12-22 08:50:16 +01:00
Unrud
3a9238f670 Check and create PID file in a race-free manner 2015-12-22 08:50:16 +01:00
Unrud
0a09804821 Close PID file 2015-12-22 08:49:58 +01:00
Unrud
80ecae40cb Assign new items to correct key 2015-12-10 09:46:38 +01:00
Guillaume Ayoub
e807c3d35b Use the first matching section for getting rights 2015-12-03 15:22:12 +01:00
Guillaume Ayoub
7b82121c12 Encode message and committer for git commits (fix #313) 2015-09-22 11:01:33 +02:00
Guillaume Ayoub
6babebd315 Version 1.0.1 2015-09-21 12:14:51 +02:00
Guillaume Ayoub
377762e23c Version 1.0 2015-09-14 11:49:34 +02:00
Guillaume Ayoub
f112a9b390 Merge pull request #305 from untitaker/database-props
Don't discard PROPPATCH on empty collections.
2015-08-28 11:26:10 +02:00
Markus Unterwaditzer
57b1ccdea5 Fix crash on empty values 2015-08-21 20:11:44 +02:00
Markus Unterwaditzer
213cb40480 Don't discard PROPPATCH on empty collections. 2015-08-21 20:08:56 +02:00
Markus Unterwaditzer
d300949fe8 Improve errorhandling in multifilesystem
If the collection doesn't exist yet, OSError(2, 'No such file or
directory') is raised.

https://travis-ci.org/untitaker/vdirsyncer/jobs/42540595
2015-08-21 16:17:00 +02:00
Guillaume Ayoub
ce9fd74d98 Merge pull request #260 from deronnax/not_found_instead_of_gone
change GET response from GONE to NOT FOUND when item is not found
2015-08-21 15:34:59 +02:00
Stephen Paul Weber
2de4f53fc3 Use PAM service
This allows authentication types to be customised for radicale.
2015-08-11 16:46:46 -05:00
Guillaume Ayoub
b4438d25f7 Cosmetics in htpasswd 2015-07-29 14:00:49 +02:00
Jan-Philip Gehrcke
3abbdcf671 htpasswd.py: add optional MD5-APR1 and BCRYPT support via passlib.
- Update docstring for optional MD5-APR1/BCRYPT support via passlib.
- Support the "md5" and "bcrypt" htpasswd_encryption config values.
- Conditionally import the required passlib components if either
  "md5" or "bcrypt" is requested in the configuration file.
- Test bcrypt backend availability upon import.
- First define verification functions, then conditionally import
  external dependencies.
- Consolidate: use context manager for reading credential file.
- Consolidate: save one call to strip() while parsing.
- Consolidate: break long lines, clarify comments and docstrings.
- Consolidate: use verification function mapping for improving maintainability.
2015-07-29 13:12:18 +02:00
Guillaume Ayoub
22a356bd06 Merge branch 'master' of github.com:Kozea/radicale 2015-07-24 16:01:38 +02:00
Guillaume Ayoub
8604593512 Fix many tests and database storage 2015-07-24 16:01:03 +02:00
Giel van Schijndel
a06e4ef075 PROPFIND: correctly handle 'propall' and 'propnames'
* Handle both the explicit <propall/> and its implicit variants
  - the missing request-body case was already handled
  - the empty request-body case wasn't
  - the explicit (a request-body containing <propall/>) wasn't either
 * <propnames/> now lists all retrievable properties

Signed-off-by: Giel van Schijndel <me@mortis.eu>
2015-06-26 13:33:10 +02:00
Hadley Rich
54d71355d1 Change xmlutils propfind to return readonly calendars 2015-06-04 11:23:01 +12:00
Liam
ba5d38d09b Fix typo 2015-05-15 13:47:44 +01:00
Matthew Monaco
bf96d4a1fa Use path for git commit message
The hard-coded message isn't very helpful, and that info is shown by the
author when looking at single line logs.
2015-05-04 13:33:52 -06:00
Guillaume Ayoub
ced7e76ba0 Small style fixes 2015-05-01 10:31:25 +02:00
Guillaume Ayoub
675f9d1f87 Merge pull request #255 from jspricke/fix_FutureWarning
Fix FutureWarning, explicitly test prop_element for None
2015-05-01 10:22:38 +02:00
Guillaume Ayoub
4cbabd2840 Merge pull request #259 from untitaker/issue258
Fully fix #258
2015-04-29 19:13:25 +02:00
Guillaume Ayoub
c249e080af Merge pull request #273 from untitaker/issue117
Fix another instance of #117
2015-04-29 19:09:38 +02:00
Guillaume Ayoub
a0fc07a894 Allow content-types with ';' in charset, fix #279 2015-04-29 19:08:20 +02:00
Guillaume Ayoub
e69bec1272 Don't rely on case-sensitive imports, fix #282
We should burn PEP 235, bicameral scripts, encodings, Python2/3 compatibility,
Windows, MacOS X, filenames, unicode (including composite characters), and the
whole world. And LF/CR too, of course.

Let's recreate a language relying on only two characters. Anyone interested?
2015-04-29 18:55:56 +02:00
Markus Unterwaditzer
baa958c81f Fix compatibility for PAM auth
PR #280 invoked `pam.authenticate().authenticate()` for older versions
of python-pam. Also, this version avoids monkeypatching the PAM module.
2015-04-25 11:14:04 +02:00
Jeremy Archer
dd01087520 Add compatibility patch for .authenticate().
Current version of python-pam (https://pypi.python.org/pypi/python-pam/1.8.1) have changed the API slightly; this patch fixes these bugs.
2015-04-19 22:41:58 -05:00
Markus Unterwaditzer
78e203a2b9 Fix another instance of #117 2015-03-22 12:25:54 +01:00
deronnax
5b8333c2b0 change GET response from GONE to NOT FOUND when item is not found 2015-02-09 11:03:06 +01:00
Markus Unterwaditzer
1126f318af Fully fix #258
If I do REPORT requests, the following line would raise a KeyError:

    items = [collection.items[name]]

Wrapping it with a try-except block obviously fixes that issue.

At least for REPORT requests, Radicale now also returns proper HTTP
status codes when items or just its properties couldn't be found.
2015-02-08 17:52:55 +01:00
Guillaume Ayoub
a7700f9805 Don't crash when getting unknown events (fix #258) 2015-02-08 17:11:29 +01:00
Guillaume Ayoub
2c4b335fad Clean the ical API 2015-02-07 17:26:20 +01:00
Guillaume Ayoub
46628b7a19 Add missing blank line 2015-02-07 16:06:41 +01:00
Guillaume Ayoub
99575d69ca Clean some ical methods 2015-02-07 15:39:57 +01:00
deronnax
fbbbaae646 indexed items storage
Conflicts:
	radicale/storage/filesystem.py
2015-02-07 14:23:51 +01:00
deronnax
240125aca7 don't pick timezones when asking for contacts 2015-02-07 14:11:43 +01:00
deronnax
0456d166cc simpler and faster unfold function 2015-02-07 14:11:18 +01:00
Jochen Sprickerhof
c43b473c4a Fix FutureWarning, explicitly test prop_element for None 2015-01-23 14:41:41 +01:00
Guillaume Ayoub
727b686089 Merge branch 'master' of github.com:Kozea/radicale 2015-01-12 18:43:07 +01:00
Guillaume Ayoub
7135367640 Version 0.10 2015-01-12 18:40:42 +01:00
Guillaume Ayoub
7772d11565 Merge pull request #202 from muggenhor/less-verbose-imap-ssl-warn
IMAP: don't spam the logs about non-SSL connections to localhost
2015-01-12 18:30:43 +01:00
Guillaume Ayoub
abb1de883b Allow PUT requests to change the whole calendar (see #250) 2015-01-05 15:45:24 +01:00
Guillaume Ayoub
6e715912f6 Handle headers other than PRODID and VERSION (fix #250) 2015-01-05 12:32:22 +01:00
Guillaume Ayoub
f2fc02501c Merge pull request #226 from meyerd/master
Only iterate props in REPORT request if they are there
2014-12-14 16:50:22 +01:00
Felix Lange
20b1a29149 fix color support
5f2245c35f introduced an additional alias for the
http://apple.com/ns/ical namespace. this can cause problems.
2014-11-11 21:26:29 +01:00
Marc Kleine-Budde
13c61bf936 auth/htpasswd: add support for salted sha1 passwords
This patch adds support for salted sha1 passwords.
2014-11-09 01:00:23 +01:00
Guillaume Ayoub
ea97c014b7 Don't crash because of missing SIGHUP on Windows
Fix #229.
2014-11-03 11:21:12 +01:00
Dominik
b561d1428b only iterate props in REPORT request if they are there 2014-10-25 20:28:50 +02:00
Guillaume Ayoub
c932ba230e Fix Python 3 compatibility 2014-10-22 16:28:08 +02:00
Guillaume Ayoub
33bee79f73 Merge pull request #191 from bouttier/reload-logger-config
Reload logger config on SIGHUP
2014-10-22 14:17:23 +02:00
Guillaume Ayoub
1c4c41ad0e Merge pull request #211 from vuntz/delete-multifilesystem
Remove props file when deleting a collection with multifilesystem
2014-10-22 14:15:02 +02:00
Guillaume Ayoub
1f9c568720 Don't recreate the regular expression for each request 2014-10-22 11:32:25 +02:00
Guillaume Ayoub
2cf34a0d67 Cosmetic changes 2014-10-21 13:13:16 +02:00
Guillaume Ayoub
4e59d734a1 Merge pull request #225 from deronnax/well-known
Support "well known" URLs
2014-10-21 13:03:18 +02:00
deronnax
8ec00f08df throw 401 in case of failed variable substition for .well-known url 2014-10-21 12:30:14 +02:00
deronnax
f846f107e6 now with regex 2014-10-21 11:57:42 +02:00
deronnax
b863e8390e add ".well-known" addresses feature (closes #126) 2014-10-20 18:51:43 +02:00
Guillaume Ayoub
124cf3f51a Merge pull request #224 from deronnax/decode_content_later
decode http resquest content later
2014-10-20 17:34:29 +02:00
deronnax
c180b4ace3 decode http resquest content later 2014-10-20 17:32:10 +02:00
Guillaume Ayoub
788b775c32 Merge pull request #198 from untitaker/discovery
Return user basepath for current-user-principal
2014-10-17 16:53:45 +02:00
Vincent Untz
71c243035e Remove props file when deleting a collection with multifilesystem 2014-09-18 14:21:10 +02:00
Vincent Untz
873872d541 Do not autocreate .props files for multifilesystem backend
This is required as we do not want .props files to be created for nodes,
otherwise they'll stop being considered as nodes, which will break
discovery of calendars.

This fixes https://github.com/Kozea/Radicale/issues/208
2014-09-15 17:42:33 +02:00
Guillaume Ayoub
a6884492a2 Version 0.9 2014-08-13 13:12:19 +02:00
Markus Unterwaditzer
4859436ba8 Return user basepath for current-user-principal
Fix #196

The way to do collection discovery described in
http://stackoverflow.com/a/11673483 doesn't work well with Radicale:

1. current-user-principal returns /user/calendar.ics/

2. PROPFINDs asking for calendar-home-set will return the URL that was
   used in the request, which is still /user/calendar.ics/

3. The final PROPFIND with Depth: 1 is supposed to list all collections,
   but because the request is done with a collection URL, Radicale returns
   the items for the "calendar.ics" collection which might or might not
   exist.
2014-08-09 23:01:13 +02:00
Giel van Schijndel
a040c666ca IMAP: don't spam the logs about non-SSL connections to localhost
When using IMAP as auth module every single request causes a warning to
be logged just because we're not encrypting traffic sent to another
process on the *same* machine.

This change recognizes that while some people might consider this
undesirable, others might have made this a conscious choice and *don't*
wish to be spammed for it. As such now only a single warning is logged
(the first time in the server's lifetime that a user logs in).

Signed-off-by: Giel van Schijndel <me@mortis.eu>
2014-08-09 22:39:16 +02:00
Guillaume Ayoub
2b4485f6ae Allow requests on root folder for authenticated users 2014-08-07 15:06:48 +02:00
Guillaume Ayoub
77ad16f2a9 Fix the PID number stored on filesystem 2014-08-07 12:31:51 +02:00
Guillaume Ayoub
9ad9c466e2 Add an option allowing requests without base_prefix
Related to #147, patch proposed by jheidemann
2014-08-06 11:51:11 +02:00
Guillaume Ayoub
0822f99650 Allow full URLs in href tags for REPORT requests
Fixes #192
2014-08-05 15:42:39 +02:00
Élie Bouttier
ab04e38dc8 Reload logger config on SIGHUP
Particularly useful for logrotate.
2014-07-28 12:15:08 -07:00
Guillaume Ayoub
a5c5f2494f New version 2014-07-28 13:03:06 +02:00
Guillaume Ayoub
a65f96fe41 Fix syntax error 2014-07-28 11:28:12 +02:00
Guillaume Ayoub
35a0047b38 Merge pull request #182 from dnnr/serialize-sorted
Sort items before serializing to minimize diff
2014-07-28 11:21:48 +02:00
Guillaume Ayoub
f92f9f5e7d Merge pull request #175 from Ede123/master
Return "401 unauthorized" on unauthorized DELETE requests (fixes #125)
2014-07-28 11:20:45 +02:00
Guillaume Ayoub
bbe7588156 Merge pull request #189 from deronnax/revert#00674fe
revert of 00674fe
2014-07-28 10:49:29 +02:00
Guillaume Ayoub
cdad148bd0 else if → elif 2014-07-28 10:24:43 +02:00
Mathieu Dupuy
4643112511 deplace pid file creation in child process 2014-07-25 15:52:04 +02:00
Mathieu Dupuy
a94984b653 revert of 00674fe 2014-07-25 15:41:56 +02:00
Daniel Danner
1769a68719 Sort items before serializing to minimize diff 2014-07-09 17:41:57 +02:00
Ede123
c9bd2d0135 Signed-off-by: Ede123 <Eduard.Braun2@gmx.de> 2014-06-21 15:34:22 +02:00
Guillaume Ayoub
6854cd0ee3 Use warning instead of warn for logging (fix #170) 2014-06-15 10:19:34 +02:00
Guillaume Ayoub
c5f19bb05b Merge pull request #160 from red-hood/master
Allow tilde expansion for htpasswd file
2014-06-15 10:07:54 +02:00
Markus Unterwaditzer
030436327a Fix #143
Since all iCalendar objects have VCALENDAR inside them, that tag is
absolutely meaningless (in this context).
2014-06-04 22:55:35 +02:00
Christian Roeder
8673717838 Allow tilde expansion for htpasswd file
Call os.path.expanduser on the location given by the config parameter.
This will allow to use settings like
  htpasswd_filename = ~/.config/radicale/users
2014-05-14 01:42:19 +02:00
Guillaume Ayoub
6021f16866 Fix owner_* methods (fix #151) 2014-05-06 15:15:58 +02:00
Guillaume Ayoub
1ab07d84e6 Add some documentation about the "user" key in the "regex" rights module 2014-04-16 18:56:57 +02:00
Guillaume Ayoub
799dbfe612 Fix "authenticated" method 2014-04-16 17:05:20 +02:00
Guillaume Ayoub
3e893a3420 Merge pull request #142 from mike-perdide/authenticated_feature
Adding a new "authenticated" ACL type.
2014-04-15 16:48:19 +02:00
Julien Miotte
aabebb5578 Adding a new "authenticated" ACL type.
When set, all authenticated users will have rw permissions on all
collections, but no anonymous user will be able to read or write any
collection.
2014-04-09 00:02:39 +02:00
Julien Miotte
963e21212b Renaming the regex.py methods args for coherence. 2014-04-09 00:02:09 +02:00
Julien Miotte
6677dbcdc9 Moving the debug log at the proper place.
If we don't do this, we might get the following in the logs:

  2014-04-08 20:00:59,354 - DEBUG: Section 'r' matches
  2014-04-08 20:00:59,354 - DEBUG: Section 'r' does not match

which is a bit confusing.
2014-04-09 00:02:03 +02:00
Markus Kaiserswerth
0dee34b3a8 Add SSL ciphers argument only if supported, fixes Python 2.6 compat 2014-03-19 14:04:25 +01:00
Guillaume Ayoub
45f8e76643 Revert "Follow the depth in REPORT requests"
This reverts commit 9556508b2a.
2014-03-05 19:26:42 +01:00
Guillaume Ayoub
9556508b2a Follow the depth in REPORT requests 2014-03-04 01:37:14 +01:00
Guillaume Ayoub
066dffd614 Cut line 2014-03-04 01:08:56 +01:00
Guillaume Ayoub
3bd5b8f0fc Let's try to release 0.9 beta 1 2014-02-24 23:26:40 +01:00
Guillaume Ayoub
f9ce1d0e6d Remove the backend/type split for rights in configuration 2014-02-05 14:11:40 +01:00
Guillaume Ayoub
2ad8b57305 Merge branch 'apache_auth' of git://github.com/jaesivsm/Radicale into jaesivsm-apache_auth
Conflicts:
	radicale/__init__.py
2014-02-05 13:09:37 +01:00
Guillaume Ayoub
701df2d201 Use environ.get instead of try/except 2014-02-05 13:01:49 +01:00
Guillaume Ayoub
f7c7746643 Merge pull request #99 from horazont/fix-preauth
Fix issues if authentication is done by web server
2014-02-05 12:59:45 +01:00
Christoph Polcin
3aa992e518 Find collections if necessary 2014-01-19 20:11:47 +01:00
Christoph Polcin
90d82d044c Fix access to collections
under certain conditions it was possible to pass the final access control
if-clause. the master branch granted access if:

    if ((read_allowed_items or write_allowed_items)
        and (not user or auth.is_authenticated(user, password))) or
        function == self.options or not items:

the easy-connect branch from pull request #95 adds:
    (is_authenticated and function == self.propfind) or

the last `or not items` condition levers out the previous authentication and
access control. that isn't that big secuity issue because in this case there
are no collection and items at all. but "bad" and anonymous users could gather
data and information which not destined for them.

this commit fixes and simplifies the if-clause.
2014-01-19 20:04:37 +01:00
Christoph Polcin
387e1fee76 Fix calendar/addressbook-home-set in PROPFIND response 2014-01-19 19:35:53 +01:00
Christoph Polcin
d09b16c5ad Fix principal-collection-set in PROPFIND response 2014-01-19 19:35:53 +01:00
Christoph Polcin
83db27303f Respond to all authenticated PROPFIND requests 2014-01-19 19:35:46 +01:00
François Schmidts
b9ff564c1f not only apache uses REMOTE_USER
removing the apache mention to make the config more "webserver agnostic"
2014-01-15 23:01:36 +01:00
François Schmidts
18ea7e4942 removing the user and password getting from main __call__ function 2014-01-15 22:40:33 +01:00
François Schmidts
34163c5020 making radicale support authenticated user from apache 2014-01-15 09:50:22 +01:00
Jonas Wielicki
d9df9a36e1 Fix issues if authentication is done by web server
This patch fixes `user` always being None if the authentication is
offloaded to the webserver, as it is suggested in the documentation.

For normal access, this is not a problem, but it becomes a problem if a
client wants to get the current-user-principal, for which the user name
is required.
2014-01-14 20:46:47 +01:00
Christoph Polcin
2ddec14535 Fix principal URLs in PROPFIND response 2014-01-05 21:22:53 +01:00
Sergey Fursov
1d0418594d Allow attach custom rights backend, small fix in default config file 2013-12-29 15:13:35 +04:00
Sergey Fursov
3b0328ca1e Allow attach custom storage backend 2013-12-28 14:15:35 +04:00
Sergey Fursov
a91a7790c5 Allow attach custom auth handler 2013-12-28 13:31:32 +04:00
Sergey Fursov
dca10fa14e Different rights management backends
Initially only one backend - regular expressions based
2013-12-25 03:44:24 +04:00
Guillaume Ayoub
0e566e4c97 Merge branch 'apple' 2013-12-24 11:22:57 +01:00
Guillaume Ayoub
a7be59b9f7 Merge pull request #92 from cristen/master
Fix wrong syntax in config file and fix #58
2013-12-24 02:21:43 -08:00
Jean-Marc Martins
7ac971e022 Fix wrong syntax in config file and fix #58 2013-12-23 16:45:15 +01:00
Guillaume Ayoub
fae2b30ec4 Merge branch 'master' of git://github.com/cristen/Radicale into cristen-master
Conflicts:
	radicale/storage/database.py
	schema.sql
2013-12-17 14:42:20 +01:00
Jean-Marc Martins
56581a998a Fix database Fix bug #77 HELL YEAH ! 2013-12-17 14:35:55 +01:00
Jean-Marc Martins
f377bd1356 Fix ssl protocol 2013-12-13 15:17:30 +01:00
Jean-Marc Martins
d765544edd Add ssl protocol and ciphers in config 2013-12-13 14:31:09 +01:00
Guillaume Ayoub
0c2c9c3a7e Store collection's parent in database (bug #77) 2013-10-31 16:07:37 +01:00
Guillaume Ayoub
a920518a26 Return an int for __hash__ 2013-10-31 14:05:15 +01:00
Guillaume Ayoub
ce8e86af63 Allow read-only access to .well-known/ca(l|rd)av (related to #32) 2013-10-31 13:57:37 +01:00
Guillaume Ayoub
92b3cf41bc Simple try/except import trick 2013-10-29 14:09:46 +01:00
Guillaume Ayoub
830774824e Merge pull request #75 from davidaurelio/master
Fix python 3 problems with default rights
2013-10-29 03:16:09 -07:00
Guillaume Ayoub
337d2719be Cosmetics 2013-10-29 09:30:51 +01:00
9m66p93w
6bc745fe45 Replace built-in hash function with hashlib.
The built-in hash function returns inconsistent values in Python 3.
2013-10-27 22:55:01 -04:00
David Aurelio
fb784c28c4 Fix python 3 problem: 'str' does not support the buffer interface 2013-10-27 22:36:56 +01:00
Guillaume Ayoub
fe1cd1d44d Use collection URL instead of main folder as user's main URL (see #32) 2013-10-24 15:31:49 +02:00
Guillaume Ayoub
a617c4db26 Fix authentication with Python 3 (see #70) 2013-10-18 14:06:57 +02:00
Guillaume Ayoub
659757f173 Style fixes 2013-10-01 13:04:24 +02:00
Štěpán Henek
7c03089601 Bugfix: auth PAM check for membership in primary and supplementary groups 2013-09-27 21:14:27 +02:00
Štěpán Henek
ee687bea18 Bugfix: auth PAM doesn't throw an exception when authenticating without username and password 2013-09-27 20:44:41 +02:00
Guillaume Ayoub
07f7e46b3e Small fixes 2013-09-25 13:04:14 +02:00
Jean-Marc Martins
a631c8c761 Fix compatibility between python2 and 3 2013-09-19 14:40:03 +02:00
Jean-Marc Martins
6c40f5e24a Merge branch 'authentication' of github.com:cristen/Radicale into authentication 2013-09-13 17:41:21 +02:00
Jean-Marc Martins
fe28b040bd Adds the committer in the config + python3 support 2013-09-13 17:26:03 +02:00
Jean-Marc Martins
e2512b12fb Fixed partially anonymous authentication 2013-09-13 15:05:02 +02:00
Jean-Marc Martins
58faf725b0 Fixed authentication for anonymous users 2013-09-12 17:39:20 +02:00
Guillaume Ayoub
43785e48a9 Get configuration keys at runtime, not when module is imported (fixes #64) 2013-09-12 13:48:49 +02:00
Guillaume Ayoub
15d8a8eb84 Remove useless primary key from line table 2013-09-07 09:50:13 +02:00
Guillaume Ayoub
0e5ef007f1 Use table attribute instead of string in database order by (probably fixes #59) 2013-09-06 22:09:16 +02:00
Guillaume Ayoub
7266c8018f Merge pull request #61 from cristen/tests
Tests
2013-09-06 07:13:17 -07:00
Guillaume Ayoub
ff535b62b0 Remove useless config keys 2013-09-06 16:00:12 +02:00
Jean-Marc Martins
ce59d9ea87 Added functionnal tests 2013-09-05 15:13:31 +02:00
Guillaume Ayoub
dbb866a750 Don't create the repository for each change 2013-08-30 19:00:10 +02:00
Jean-Marc Martins
97a19405c4 Adds git support to Radicale (Fix #30) 2013-08-30 17:23:04 +02:00
Jean-Marc Martins
6e98b1b3e8 Adds multifilesystem storage backend (See #30) 2013-08-29 16:55:36 +02:00
Jean-Marc Martins
484933d4b6 Merge branch 'master' of github.com:Kozea/Radicale 2013-08-28 10:48:15 +02:00
Ossi Salmi
8c3cf6bccd Fix built-in owner_only right 2013-08-28 00:56:45 +03:00
Guillaume Ayoub
423feaec2a Get a random color for calendars with no color 2013-08-27 17:06:16 +02:00
Guillaume Ayoub
00b498677d Merge pull request #48 from jspricke/color
Add color support
2013-08-27 08:02:38 -07:00
Jean-Marc Martins
056dec5819 Decode urls in XML (fix #26) 2013-08-27 16:43:36 +02:00
Guillaume Ayoub
f09b070e40 Fix stupid bug in logs 2013-08-27 15:19:15 +02:00
Guillaume Ayoub
c0c652b3f8 Add documentation and example for rights management 2013-08-27 11:05:54 +02:00
Guillaume Ayoub
a884169487 Don't be so optimistic about collection detection.
For clients that can't create collections with MK* requests and that don't
use GET requests, is_leaf gives False for empty collections only reached
through a PROPFIND request. As Radicale can't create a collection for
each type of request, we have to strip the last part of path for paths ending
with .ics and .vcf, as they can be represent items and not collections.
2013-08-25 09:35:22 +02:00
Guillaume Ayoub
205600c2d1 Fix the test used to guess if a path is a collection 2013-08-24 01:26:06 +02:00
Guillaume Ayoub
2cd90c6a4a Use a simpler code to detect not-created-yet addressbooks 2013-08-23 13:40:17 +02:00
Guillaume Ayoub
61eedc2b7c Match stupid naming conventions used by Apple's clients for collections 2013-08-23 13:33:35 +02:00
Guillaume Ayoub
07a9ce8296 Fix owner_* rights with python2 (fix #49) 2013-08-21 06:58:30 +02:00
Jochen Sprickerhof
5f2245c35f Add color support
You can change the default color by changing the props (.props file for
the filesystem storage backend).
2013-08-17 12:16:37 +02:00
Guillaume Ayoub
f7f26afd6b Fix rights type "None" 2013-08-14 11:58:08 +02:00
Guillaume Ayoub
d1379e349a Don't check the file twice for rights 2013-08-14 10:52:50 +02:00
Guillaume Ayoub
586773148e Use a more simple rights manager 2013-08-14 10:50:59 +02:00
Guillaume Ayoub
3e3f07a6de Assume that the collection is an addressbook when "carddav" is in URL 2013-07-26 17:47:51 +02:00
Guillaume Ayoub
faa331ccc3 Change a couple of things in regex-based rights manager 2013-07-23 18:05:22 +02:00
mail@sweil.de
eed0f74fad New rights management method: regex
user and collection are matched against regular expression to determine read/write access
2013-07-19 15:16:36 +02:00
Guillaume Ayoub
b8848de15e Preparing next version 2013-07-12 18:40:12 +02:00
Guillaume Ayoub
2df8f92f87 Version 0.8 2013-07-12 17:45:30 +02:00
Guillaume Ayoub
05dbd71eca Fix logging 2013-07-12 17:45:09 +02:00
Guillaume Ayoub
b60b759a36 Use extra parameter instead of formatted line in logger 2013-07-12 16:28:58 +02:00
Guillaume Ayoub
c4f2587fd9 Pylint 2013-07-12 15:25:57 +02:00
Guillaume Ayoub
18f5c334f1 Clean log module 2013-07-12 15:12:07 +02:00
Guillaume Ayoub
af30483f69 Fix docstring again 2013-07-09 18:33:35 +02:00
Guillaume Ayoub
7a6efedcff Fix docstring 2013-07-09 18:32:42 +02:00
Felix Lange
b737d17172 Print a debug message when the logging config file doesn't exist 2013-07-07 15:48:14 +02:00
Felix Lange
ada23997a9 Resolve logging configuration file when logging is started 2013-07-07 15:07:21 +02:00
Guillaume Ayoub
de1e57081b Put the realm in the configuration file (fix #37) 2013-06-28 16:39:09 +02:00
Guillaume Ayoub
70f8ee94d9 Fix supported-calendar-component-set for collection's components 2013-06-17 11:30:26 +02:00
Guillaume Ayoub
d38c4d1c1d Fix config files management 2013-06-04 16:59:21 +02:00
Guillaume Ayoub
8adb096de2 Fix the warning if the configuration file is not found 2013-06-04 15:12:06 +02:00
Guillaume Ayoub
61d063c610 Print a warning if the configuration file is not found 2013-06-04 16:00:46 +03:00
Guillaume Ayoub
847235f6e7 Read the configuration file for rights each time
We now re-parse the file each time we need to get the rights. It's
definitely too much, but it's not the slowest part of Radicale.
2013-05-22 18:49:30 +02:00
Guillaume Ayoub
1b098058bd Update the documentation about leading slash in right management file's sections 2013-05-15 22:49:48 +02:00
Guillaume Ayoub
ca0a1ecfde Log if the file used for rights management is not found 2013-05-15 22:49:02 +02:00
Guillaume Ayoub
fce91e7060 Allow ~ in rights filename 2013-05-15 22:41:51 +02:00
Guillaume Ayoub
45e844cda2 Fix a read/write mismatch in from_file rights manager 2013-05-15 22:29:40 +02:00
Guillaume Ayoub
dd7f886fcc Add content type for collection items 2013-05-14 13:18:12 +02:00
Guillaume Ayoub
b7aa5c8d14 Fix collection properties set by proppatch or mk* requests 2013-05-13 23:19:22 +02:00
Guillaume Ayoub
fab7796ca0 Allow additional HTTP headers in configuration file
Best ratio coolness/sloc ever!
2013-05-13 18:15:08 +02:00
Guillaume Ayoub
040d3b87a8 Revert a strange commit (let's say I was tired) 2013-05-13 18:14:42 +02:00
Guillaume Ayoub
69e2eb0908 Store the supported-calendar-component-set property in the calendar properties 2013-05-10 14:56:17 +02:00
Guillaume Ayoub
e9e811d375 Allow requests with no maching items (ie. requests at "/") 2013-05-01 20:36:41 +02:00
Guillaume Ayoub
45c1647a92 Don't try TLS with SSL connections 2013-05-01 20:24:41 +02:00
Guillaume Ayoub
0f0bddedc9 Fix types of IMAP config parameters 2013-05-01 20:24:05 +02:00
Guillaume Ayoub
9a49be1e10 Don't try to login with IMAP and courier when user or password is empty 2013-05-01 20:23:03 +02:00
Guillaume Ayoub
e4af425893 Fix some corner-cases for requests at root path 2013-05-01 20:13:51 +02:00
Guillaume Ayoub
f73b44a311 Useless typo 2013-05-01 20:12:24 +02:00
Guillaume Ayoub
bf8e874e4d Merge *base_prefix config keys into base_prefix (fixes #996) 2013-04-30 14:02:17 +02:00
Guillaume Ayoub
eaa969a05c Merge pull request #24 from vuntz/radicale-in-subdir
Allow running radicale in a subdir, as well as in a subdir behind a proxy
2013-04-26 08:33:12 -07:00
Guillaume Ayoub
5c4fb8529d Fix modification time for not-created-yet collections 2013-04-26 13:29:24 +02:00
Guillaume Ayoub
406bb6e8cc Update copyright years 2013-04-26 01:28:03 +02:00
Guillaume Ayoub
22077aa7a1 Clean the http-based auth module 2013-04-26 01:14:33 +02:00
Guillaume Ayoub
494ffbd762 Merge pull request #15 from MelianLabs/http
Added HTTP-based authentication
2013-04-25 16:07:49 -07:00
Guillaume Ayoub
2738d10830 Support SSL for IMAP authentication
Based on Nikita Koshikov's commit:
https://github.com/interlegis/Radicale/commit/000fc2a
2013-04-26 00:56:56 +02:00
Guillaume Ayoub
a01e4d18e1 Clean database storage code 2013-04-20 12:59:56 +02:00
Guillaume Ayoub
16c6f55ebd Initial *untested* support for database storage 2013-04-20 12:51:32 +02:00
Jonathan Dupart
7a96578ca4 Typo: missing comma
sync-collection and expand-property where returned concatenated in
PROPFIND answers.
2013-04-09 00:42:25 +02:00
Vincent Untz
74590cfd0c Add proxy_base_prefix option to help run in a subdir behind a proxy
I have a setup where Radicale is running as the normal process, and
nginx is acting as proxy for Radicale for requests under /radicale/.
This means that all requests to nginx that go to /radicale/ are sent to
a radicale server that expects requests coming at /.

Obviously, all the href need to have the /radicale/ prefix to have
things work. So a new option proxy_base_prefix is added to allow having
such a setup.

All href that are sent in the replies will have the proxy_base_prefix
prepended.
2013-03-18 18:20:06 +01:00
Vincent Untz
0dbf71f57f Fix issues with base_prefix option 2013-03-18 18:13:28 +01:00
Fabrice Bellet
54bda5594c Handle use in a subdir. Patch from Clint Adams <clint@softwarefreedom.org> adapted from http://redmine.kozea.fr/issues/996 2013-03-18 18:10:13 +01:00
Guillaume Ayoub
b6b48b5af7 Typo 2013-02-27 10:36:54 +01:00
Christoph Polcin
9972897d75 accepts PROPFIND whitout request body 2013-02-26 00:45:08 +01:00
Guillaume Ayoub
dd94660ef0 Use "is None" instead of "== None" 2013-02-01 00:16:31 +01:00
Guillaume DOTT
85a7b7db50 Prevent exception in from_file when user is None 2013-01-31 22:41:50 +01:00
Guillaume Ayoub
bcdf00f85e Allow colon characters in passwords (fixes #1308) 2013-01-31 17:27:23 +01:00
Guillaume Ayoub
151f82c593 Typo 2013-01-16 11:16:16 +01:00
Mark Adams
d23cabf8f6 Added -C command line flag for specifying configuration file location. 2013-01-15 13:18:09 -06:00
Guillaume DOTT
5a3f0e4d97 Handle exceptions when looking for rights in a file 2012-12-11 15:03:29 +01:00
Ehsanul Hoque
dbc622e8d7 Added HTTP-based authentication
The purpose of this is in order to tie CalDAV accounts to an external web
application. This application must provide a URL end point to which a POST
request can be made, with the username/password sent as the payload. A 200 or
201 response is considered successful authentication. Any other response is
a failure.
2012-09-28 09:52:17 +06:00
Guillaume Ayoub
4c064bcf35 Clean rights from file and remove tests 2012-09-15 09:08:01 +02:00
Guillaume Ayoub
7b15832dbf Merge pull request #12 from matthiasjordan/master
File-based rights and testing
2012-09-14 05:23:24 -07:00
Guillaume Ayoub
e06cfa4de0 Handle "If-None-Match: *" HTTP headers for PUT requests 2012-08-31 17:24:32 +02:00
Matthias Jordan
e08aa6176c Less aggressive logging 2012-08-18 00:36:30 +02:00
Matthias Jordan
0c4562c01d Using different HTTP status codes in some cases where auth or rights are violated 2012-08-18 00:18:22 +02:00
Matthias Jordan
db708a0853 Checking rights only once. Also taking care of mistakenly checking
ownership of events. xmlutils is now unaware of rights.
2012-08-15 22:36:42 +02:00
Matthias Jordan
0722db04fb Extract method 2012-08-15 15:12:18 +02:00
Matthias Jordan
bc0b74c555 Using collection's URL for logging instead of its name 2012-08-11 00:57:15 +02:00
Matthias Jordan
e3bc6afdd3 Added file-based rights management 2012-08-11 00:56:45 +02:00
Guillaume Ayoub
237f42909a Add owner_write rights manager 2012-08-09 17:32:03 +02:00
Guillaume Ayoub
98bbe61f67 Use relative imports 2012-08-09 17:31:36 +02:00
Guillaume Ayoub
9f446cb261 Fix GET requests 2012-08-09 16:00:31 +02:00
Guillaume Ayoub
17857654b0 Use the same import mechanisms for auth, storage, rights 2012-08-09 15:39:01 +02:00
Guillaume Ayoub
3ddbb80674 Fix OPTIONS requests 2012-08-09 14:29:44 +02:00
Guillaume Ayoub
4fa53d15b3 Fix the auth checking algorithm 2012-08-09 14:15:20 +02:00
Guillaume Ayoub
e33ee8ea7c Small fixes 2012-08-08 18:54:58 +02:00
Guillaume Ayoub
e14bed9f95 Add rights section in config module 2012-08-08 18:45:55 +02:00
Guillaume Ayoub
b4a7ada5f2 is_authorized returns True when no auth method is set 2012-08-08 18:44:25 +02:00
Guillaume Ayoub
45afac5353 Code cleaned and modules renamed
*Radicale is probably broken now*
2012-08-08 18:29:09 +02:00
Guillaume Ayoub
a17ad1b6a3 Un-revert some lost commits 2012-08-08 16:37:18 +02:00
Matthias Jordan
55a13d4c39 Merge remote-tracking branch 'upstream/master'
Conflicts:
	radicale/__init__.py
	radicale/acl/courier.py
2012-08-04 11:27:51 +02:00
Guillaume Ayoub
7d06d1b4d5 Version set to "git" 2012-08-03 14:37:40 +02:00
Guillaume Ayoub
0cf9b92ce7 Version 0.7.1 2012-08-03 14:37:02 +02:00
Guillaume Ayoub
7ae764fd4b Enhance readability according to PEP8 2012-08-03 14:08:11 +02:00
Guillaume Ayoub
f593ab0fbd Set the maximuml line length to 79 instead of 80 2012-08-03 13:55:52 +02:00
Matthias Jordan
e40e68b528 Separation of authentication and authorization. Separation of read and write authorization.
Static test strategies for authentication. Barely tested. Use at your own risk!
2012-08-03 13:10:20 +02:00
Guillaume Ayoub
a7481a0546 Clean the server's __call__ method, with comments and better variable names 2012-08-03 11:52:30 +02:00
Guillaume Ayoub
9d193b6b30 Don't start Radicale when PID file exists (fixes #890) 2012-08-03 00:29:06 +02:00
Guillaume Ayoub
83baebd750 PEP8 and cleanup for the new IMAP ACL module 2012-07-16 19:09:35 +02:00
Daniel Aleksandersen
e2d9f79dc4 Default config values for IMAP ACL
Hostname ``localhost``on port ``143`` (standard port).
2012-07-05 20:54:33 +02:00
Daniel Aleksandersen
360d4e6411 New IMAP ACL
Secure authentication based on the ``imaplib`` module.

Validating users against a modern IMAP4rev1 server that awaits STARTTLS
on port 143. Legacy SSL (often on legacy port 993) is deprecated and
thus unsupported. STARTTLS is enforced except if host is ``localhost``
as passwords are sent in PLAIN.

Python 3.2 or newer is required for TLS.
2012-07-05 20:52:10 +02:00
Daniel Aleksandersen
a45b7b7c23 Return the group database entry 2012-07-04 15:56:15 +03:00
Guillaume Ayoub
5a260d33db Merge pull request #6 from antonyc/patch-1
Fix typo in config file for htpasswd* entries
2012-07-02 04:43:14 -07:00
Benjamin Frank
03fc5fc526 Fix Courier ACL
Replaced blacklisting approach with a whitelisting on, thus preventing access
due to responses from authlib not containing the word 'FAIL', e.g. empty ones
(see http://www.courier-mta.org/authlib/README_authlib.html#authpipeproto)
2012-07-02 13:30:28 +02:00
Guillaume Ayoub
ea94ec919e Use the right namespace for adressbook tags 2012-06-28 11:28:42 +02:00
antonyc
c0ed505f78 I tried to start a dev installation with htpasswd and found this typo. 2012-06-23 01:01:45 +04:00
Guillaume Ayoub
cff6c2b43b Return 204 response when an item is modified 2012-06-22 12:29:49 +02:00
Guillaume Ayoub
e471d15f00 Merge branch 'master' of github.com:Kozea/Radicale 2012-06-14 16:36:20 +02:00
Guillaume Ayoub
25c3648d75 Add a dummy filter for item tags
Related to #53
2012-06-14 16:35:32 +02:00
Oskari Timperi
209b9e4307 Set the D:displayname for collections in PROPFIND response
Atleast Nokia N9 shows the displayname to user. If the
property is empty, a calendar with empty name is shown.
Which is annoying.
2012-05-24 12:48:48 +03:00
Guillaume Ayoub
b5e94598e9 No etag returned when an added item doesn't have the same name as the one given by the client (closes #799) 2012-04-27 16:03:14 +02:00
Guillaume Ayoub
ca5c0483b0 Return 200 instead of 204 status for DELETE requests (closes #802) 2012-04-18 14:00:20 +02:00
Guillaume Ayoub
c3ce8fde38 In PROPFIND responses, add the not-yet-created collection type when it can be guessed
Maybe related to #795
2012-04-11 19:50:18 +02:00
Guillaume Ayoub
f6ace2b6ec Fix a bug with DELETE requests when deleted item is not found 2012-03-21 11:26:06 +01:00
Guillaume Ayoub
085c9f0aca Update the version to "git" 2012-03-20 18:45:12 +01:00
Guillaume Ayoub
d274044700 Version 0.7 2012-03-20 18:36:34 +01:00
Guillaume Ayoub
a9c74ae84d Always allow OPTIONS requests (fixes #780) 2012-03-20 13:31:10 +01:00
Guillaume Ayoub
505fd6a644 List the aggregation of privileges instead of only "all" 2012-03-19 12:35:39 +01:00
Guillaume Ayoub
cc23d9dd8d Small cleanup about LDAP 2012-03-13 10:47:01 +01:00
Guillaume Ayoub
3bfd6352b2 Merge pull request #3 from koppor/master
Added support for custom filters at LDAP
2012-03-13 02:42:37 -07:00
Guillaume Ayoub
344f87d8fb Add a config key to ignore reverse DNS (fixes #779) 2012-03-13 09:35:01 +01:00
Oliver Kopp
0c2bbb8ae1 LDAP: custom filters supported 2012-03-10 21:59:06 +01:00
Guillaume Ayoub
7bfc17a51d Use " instead of ' (you can laugh at me) 2012-03-01 10:40:15 +01:00
Guillaume Ayoub
36918232c0 Better detection of vcards 2012-02-23 16:20:21 +01:00
Guillaume Ayoub
f37c3a0b27 Let GET requests create address books too! 2012-02-23 16:16:14 +01:00
Guillaume Ayoub
22e4e3764c Explicitely create collections on GET requests 2012-02-23 15:28:45 +01:00
Guillaume Ayoub
128a20714b Use is_leaf and is_node instead of is_item and is_collection 2012-02-23 15:17:59 +01:00
Guillaume Ayoub
5e8dec6683 Ignore the .props when giving children 2012-02-20 17:45:47 +01:00
Guillaume Ayoub
224d0d47e8 Fix the collection detection 2012-02-20 17:41:36 +01:00
Guillaume Ayoub
97f8738465 Return the collections and the items in collections 2012-02-20 16:32:42 +01:00
Guillaume Ayoub
d256a0551c Fix an indentation bug 2012-02-20 16:32:32 +01:00
Guillaume Ayoub
f9d041ba6b Use relative imports for acl and storage modules 2012-02-08 16:56:58 +01:00
Guillaume Ayoub
8dcc613f0a Don't use the VADDRESSBOOK tag anymore (closes #667) 2012-02-03 18:01:03 +01:00