mirror of
https://github.com/Kozea/Radicale.git
synced 2025-06-26 16:45:52 +00:00
major review
parent
6b8993a8ca
commit
d2bdcb7e52
2 changed files with 74 additions and 28 deletions
|
@ -1,28 +0,0 @@
|
||||||
Some calendar clients, (e.g. iOS, or KDE Kontact) add all of a user's calendars at once. So to minimise client configuration I decided to set up sharing on the server side.
|
|
||||||
|
|
||||||
My motivation is to have two (or more) users on the server with three different kinds of calendars each: personal calendars (not shared), calendars readable by the other user(s), and calendars writeable by everyone.
|
|
||||||
|
|
||||||
I'm using the following **rights** configuration file (still on Radicale 1.1.1, but it might also work on 2.0):
|
|
||||||
|
|
||||||
# The first rule matching both user and collection patterns will be returned.
|
|
||||||
|
|
||||||
# Allow authenticated user to read 'shared' collections in their home directory
|
|
||||||
# (usually symlinks from other calendars)
|
|
||||||
[allow-shared-read]
|
|
||||||
user: .+
|
|
||||||
collection: %(login)s/.+-shared.ics$
|
|
||||||
permission: r
|
|
||||||
|
|
||||||
# Give owners read-write access to everything else:
|
|
||||||
[owner-write]
|
|
||||||
user: .+
|
|
||||||
collection: %(login)s.*$
|
|
||||||
permission: rw
|
|
||||||
|
|
||||||
Now to share my **calendar.ics** with a second user, I, 'V', am creating a symlink to e.g. **v-shared.ics** in the other user's calendar directory. The other user can now **only** read the calendar, thanks to the rule [allow-shared-read].
|
|
||||||
|
|
||||||
If I want to give write access another user, I'll just create a link not ending in _'-shared.ics'_, to that user's directory. This setup is just tested briefly, but I found another user mentioning a similar approach on the issues tracker.
|
|
||||||
|
|
||||||
### Radicale v3
|
|
||||||
|
|
||||||
This still works - with some modifications with version 3.1.8. The main difference is that links are made to the directory containing the .ics files, rather than a single .ics file
|
|
74
Sharing-Collections.md
Normal file
74
Sharing-Collections.md
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
# Radicale v3
|
||||||
|
|
||||||
|
"radicale" is a lightwide CalDAV/CardDAV server and supporting sharing of collections only on server side with static configuration.
|
||||||
|
|
||||||
|
## Prepraration
|
||||||
|
|
||||||
|
* create a directory aside `collection-root` (which is the base directory of "radicale" to lookup user folders) like e.g. `collection-shared`
|
||||||
|
* create a sub-directory structure with collections or group->collections
|
||||||
|
* softlink required collection directory into user's directory
|
||||||
|
* in case of read-only permissions are required for shared calendar, extend `rights` file matching particular collection and user
|
||||||
|
|
||||||
|
## Example for a storage layout incl. shared calendar/addressbook
|
||||||
|
|
||||||
|
Note: `*/.Radicale*` files/directories are not shown here
|
||||||
|
|
||||||
|
* `[d]`: directory
|
||||||
|
* `[f]`: file
|
||||||
|
* `[l]`: softlink
|
||||||
|
* `(ro)`: read-only
|
||||||
|
* `(rw)`: read-write
|
||||||
|
|
||||||
|
```
|
||||||
|
[d] /var
|
||||||
|
└─[d] /lib
|
||||||
|
└─[d] /radicale
|
||||||
|
└─[d] /collections
|
||||||
|
├─[d] /collection-shared
|
||||||
|
│ ├─[d] /group1
|
||||||
|
│ │ ├─[d] /sharedcalendar1 (Collection)
|
||||||
|
│ │ │ ├─[f] sharedschedule1.ics
|
||||||
|
│ │ │ ├─[f] ...
|
||||||
|
│ │ │ └─[f] sharedscheduleX.ics
|
||||||
|
│ │ └─[d] /sharedaddressbook1 (Collection)
|
||||||
|
│ │ ├─[f] sharedcontact1.vcf
|
||||||
|
│ │ ├─[f] ...
|
||||||
|
│ │ └─[f] sharedcontactX.vcf
|
||||||
|
│ │
|
||||||
|
│ └─[d] /group2
|
||||||
|
│ ├─[d] /sharedcalendar2 (Collection)
|
||||||
|
│ │ ├─[f] sharedschedule1.ics
|
||||||
|
│ │ ├─[f] ...
|
||||||
|
│ │ └─[f] sharedscheduleX.ics
|
||||||
|
│ └─[d] /sharedaddressbook2 (Collection)
|
||||||
|
│ ├─[f] sharedcontact1.vcf
|
||||||
|
│ ├─[f] ...
|
||||||
|
│ └─[f] sharedcontactX.vcf
|
||||||
|
│
|
||||||
|
└─[d] /collection-root
|
||||||
|
├─[d] /USER1 (share some collections of "group1")
|
||||||
|
│ ├─[d] mycalendar1 (Collection)
|
||||||
|
│ ├─[d] myaddressbook1 (Collection)
|
||||||
|
│ ├─[l] sharedcalendar1 -> ../../collection-shared/group1/sharedcalendar1 (rw, default)
|
||||||
|
│ └─[l] sharedaddressbook1 -> ../../collection-shared/group1/sharedaddressbook1 (rw, default)
|
||||||
|
│
|
||||||
|
├─[d] /USER2 (share some collections of "group2" read-only)
|
||||||
|
│ ├─[d] mycalendar1 (Collection)
|
||||||
|
│ ├─[d] myaddressbook1 (Collection)
|
||||||
|
│ ├─[l] sharedcalendar2 -> ../../collection-shared/group2/sharedcalendar2 (ro)
|
||||||
|
│ └─[l] sharedaddressbook2 -> ../../collection-shared/group2/sharedaddressbook2 (ro)
|
||||||
|
```
|
||||||
|
|
||||||
|
Related `rights` extension for read-only:
|
||||||
|
|
||||||
|
```
|
||||||
|
[group2-sharedcalendar2-ro]
|
||||||
|
user: USER2
|
||||||
|
collection: {user}/sharedcalendar2(/.+)?
|
||||||
|
permissions: r
|
||||||
|
|
||||||
|
[group2-sharedaddressbook2-ro]
|
||||||
|
user: USER2
|
||||||
|
collection: {user}/sharedaddressbook2(/.+)?
|
||||||
|
permissions: r
|
||||||
|
```
|
Loading…
Add table
Add a link
Reference in a new issue