tilia-dav 3.1.0.pre.alpha6 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/CHANGELOG.sabre.md +97 -1
- data/Gemfile +1 -16
- data/Gemfile.lock +44 -41
- data/LICENSE +1 -1
- data/LICENSE.sabre +1 -1
- data/examples/addressbookserver.rb +52 -0
- data/examples/calendarserver.rb +58 -0
- data/examples/fileserver.rb +57 -0
- data/examples/groupwareserver.rb +69 -0
- data/examples/sql/mysql.addressbook.sql +28 -0
- data/examples/sql/mysql.calendars.sql +64 -0
- data/examples/sql/mysql.locks.sql +13 -0
- data/examples/sql/mysql.principals.sql +21 -0
- data/examples/sql/mysql.propertystorage.sql +8 -0
- data/examples/sql/mysql.users.sql +9 -0
- data/examples/sql/pgsql.addressbook.sql +52 -0
- data/examples/sql/pgsql.calendars.sql +93 -0
- data/examples/sql/pgsql.locks.sql +19 -0
- data/examples/sql/pgsql.principals.sql +38 -0
- data/examples/sql/pgsql.propertystorage.sql +13 -0
- data/examples/sql/pgsql.users.sql +14 -0
- data/examples/sql/sqlite.addressbooks.sql +28 -0
- data/examples/sql/sqlite.calendars.sql +64 -0
- data/examples/sql/sqlite.locks.sql +12 -0
- data/examples/sql/sqlite.principals.sql +20 -0
- data/examples/sql/sqlite.propertystorage.sql +10 -0
- data/examples/sql/sqlite.users.sql +9 -0
- data/lib/tilia/cal_dav/ics_export_plugin.rb +1 -1
- data/lib/tilia/cal_dav/plugin.rb +27 -11
- data/lib/tilia/cal_dav/schedule/i_mip_plugin.rb +2 -2
- data/lib/tilia/cal_dav/schedule/plugin.rb +7 -0
- data/lib/tilia/dav/auth/backend.rb +1 -0
- data/lib/tilia/dav/auth/backend/abstract_basic.rb +3 -2
- data/lib/tilia/dav/auth/backend/abstract_bearer.rb +116 -0
- data/lib/tilia/dav/auth/backend/abstract_digest.rb +3 -2
- data/lib/tilia/dav/auth/backend/apache.rb +2 -1
- data/lib/tilia/dav/auth/backend/sequel.rb +2 -9
- data/lib/tilia/dav/client.rb +29 -3
- data/lib/tilia/dav/core_plugin.rb +1 -2
- data/lib/tilia/dav/server.rb +16 -4
- data/lib/tilia/dav/temporary_file_filter_plugin.rb +3 -0
- data/lib/tilia/dav/tree.rb +4 -3
- data/lib/tilia/dav/version.rb +1 -1
- data/lib/tilia/dav/xml/element/response.rb +20 -2
- data/lib/tilia/dav_acl/principal_backend/sequel.rb +50 -6
- data/test/cal_dav/ics_export_plugin_test.rb +1 -0
- data/test/cal_dav/plugin_test.rb +4 -4
- data/test/cal_dav/schedule/plugin_properties_test.rb +51 -0
- data/test/card_dav/backend/sequel_my_sql_test.rb +3 -3
- data/test/card_dav/vcf_export_test.rb +11 -1
- data/test/dav/auth/backend/abstract_bearer_test.rb +71 -0
- data/test/dav/client_test.rb +42 -4
- data/test/dav/core_plugin_test.rb +12 -0
- data/test/dav/fs_ext/server_test.rb +1 -1
- data/test/dav/http_copy_test.rb +185 -0
- data/test/dav/mock/collection.rb +6 -9
- data/test/dav/mock/file.rb +10 -9
- data/test/dav/mock/streaming_file.rb +1 -3
- data/test/dav/server_events_test.rb +8 -6
- data/test/dav/server_range_test.rb +135 -155
- data/test/dav/server_simple_test.rb +14 -0
- data/test/dav/xml/element/response_test.rb +56 -1
- data/test/dav/xml/property/href_test.rb +14 -0
- data/test/dav_acl/principal_backend/abstract_sequel_test.rb +16 -0
- data/test/dav_acl/principal_backend/mock.rb +1 -1
- data/test/dav_server_test.rb +1 -1
- data/tilia-dav.gemspec +2 -2
- metadata +38 -14
- data/test/dav/copy_test.rb +0 -33
- data/test/dav/server_copy_move_test.rb +0 -164
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 524a4d934e2aa6ab149e068e97becbb5a25e6340
|
|
4
|
+
data.tar.gz: c0782ae991bd4f61f6966629e5607a8b53b11819
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 387e985c9769ef1def97f600aaf60aac11030a7ef942830d8bfaa43f05411de9cf6270b320c6db92c22746e55a2b9b5adeb54e2acff63aa116ba1f456a073ed0
|
|
7
|
+
data.tar.gz: 573cf47a662afbb94547e677457fdc25d537d034e6c31431b7204be8a81b2fd5f3a0cc4b6cf48f5b8ac761c7f21b6ae7f37d9e76ca141eaa38b537f702949db6
|
data/.gitignore
CHANGED
data/CHANGELOG.sabre.md
CHANGED
|
@@ -1,6 +1,47 @@
|
|
|
1
1
|
ChangeLog
|
|
2
2
|
======
|
|
3
3
|
|
|
4
|
+
3.1.1 (2016-01-25)
|
|
5
|
+
------------------
|
|
6
|
+
|
|
7
|
+
* #755: The brower plugin and some operations would break when scheduling and
|
|
8
|
+
delegation would both be enabled.
|
|
9
|
+
* #757: A bunch of unittest improvements (@jakobsack).
|
|
10
|
+
* The zip release ships with [sabre/vobject 4.0.2][vobj],
|
|
11
|
+
[sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
|
|
12
|
+
[sabre/uri 1.0.1][uri] and [sabre/xml 1.3.0][xml].
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
3.1.0 (2016-01-06)
|
|
16
|
+
------------------
|
|
17
|
+
|
|
18
|
+
* Better error message when the browser plugin is not enabled.
|
|
19
|
+
* Added a super minimal server example.
|
|
20
|
+
* #730: Switched all mysql tables to `utf8mb4` character set, allowing you to
|
|
21
|
+
use emoji in some tables where you couldn't before.
|
|
22
|
+
* #710: Provide an Auth backend that acts as a helper for people implementing
|
|
23
|
+
OAuth2 Bearer token. (@fkooman).
|
|
24
|
+
* #729: Not all calls to `Sabre\DAV\Tree::getChildren()` were properly cached.
|
|
25
|
+
* #727: Added another workaround to make CalDAV work for Windows 10 clients.
|
|
26
|
+
* #742: Fixes to make sure that vobject 4 is correctly supported.
|
|
27
|
+
* #726: Better error reporting in `Client::propPatch`. We're now throwing
|
|
28
|
+
exceptions.
|
|
29
|
+
* #608: When a HTTP error is triggered during `Client:propFind`, we're now
|
|
30
|
+
throwing `Sabre\HTTP\ClientHttpException` instead of `Sabre\DAV\Exception`.
|
|
31
|
+
This new exception contains a LOT more information about the problem.
|
|
32
|
+
* #721: Events are now handled in the correct order for `COPY` requests.
|
|
33
|
+
Before this subtle bugs could appear that could cause data-loss.
|
|
34
|
+
* #747: Now throwing exceptions and setting the HTTP status to 500 in subtle
|
|
35
|
+
cases where no other plugin set a correct HTTP status.
|
|
36
|
+
* #686: Corrected PDO principal backend's findByURI for email addresses that
|
|
37
|
+
don't match the exact capitalization.
|
|
38
|
+
* #512: The client now has it's own `User-Agent`.
|
|
39
|
+
* #720: Some browser improvements.
|
|
40
|
+
* The zip release ships with [sabre/vobject 4.0.1][vobj],
|
|
41
|
+
[sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
|
|
42
|
+
[sabre/uri 1.0.1][uri] and [sabre/xml 1.3.0][xml].
|
|
43
|
+
|
|
44
|
+
|
|
4
45
|
3.1.0-alpha2 (2015-09-05)
|
|
5
46
|
-------------------------
|
|
6
47
|
|
|
@@ -34,6 +75,40 @@ ChangeLog
|
|
|
34
75
|
[sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
|
|
35
76
|
|
|
36
77
|
|
|
78
|
+
3.0.7 (2016-01-12)
|
|
79
|
+
------------------
|
|
80
|
+
|
|
81
|
+
* #752: PHP 7 support for 3.0 branch. (@DeepDiver1975)
|
|
82
|
+
* The zip release ships with [sabre/vobject 3.5.0][vobj],
|
|
83
|
+
[sabre/http 4.2.1][http], [sabre/event 2.0.2][evnt],
|
|
84
|
+
[sabre/uri 1.0.1][uri] and [sabre/xml 1.3.0][xml].
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
3.0.6 (2016-01-04)
|
|
88
|
+
------------------
|
|
89
|
+
|
|
90
|
+
* #730: Switched all mysql tables to `utf8mb4` character set, allowing you to
|
|
91
|
+
use emoji in some tables where you couldn't before.
|
|
92
|
+
* #729: Not all calls to `Sabre\DAV\Tree::getChildren()` were properly cached.
|
|
93
|
+
* #734: Return `418 I'm a Teapot` when generating a multistatus response that
|
|
94
|
+
has resources with no returned properties.
|
|
95
|
+
* #740: Bugs in `migrate20.php` script.
|
|
96
|
+
* The zip release ships with [sabre/vobject 3.4.8][vobj],
|
|
97
|
+
[sabre/http 4.1.0][http], [sabre/event 2.0.2][evnt],
|
|
98
|
+
[sabre/uri 1.0.1][uri] and [sabre/xml 1.3.0][xml].
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
3.0.5 (2015-09-15)
|
|
102
|
+
------------------
|
|
103
|
+
|
|
104
|
+
* #704: Fixed broken uri encoding in multistatus responses. This affected
|
|
105
|
+
at least CyberDuck, but probably also others.
|
|
106
|
+
* The zip release ships with [sabre/vobject 3.4.7][vobj],
|
|
107
|
+
* The zip release ships with [sabre/vobject 3.4.7][vobj],
|
|
108
|
+
[sabre/http 4.1.0][http], [sabre/event 2.0.2][evnt],
|
|
109
|
+
[sabre/uri 1.0.1][uri] and [sabre/xml 1.2.0][xml].
|
|
110
|
+
|
|
111
|
+
|
|
37
112
|
3.0.4 (2015-09-06)
|
|
38
113
|
------------------
|
|
39
114
|
|
|
@@ -179,6 +254,8 @@ ChangeLog
|
|
|
179
254
|
its second argument, and no longer receives seperate properties and
|
|
180
255
|
resourcetype arguments.
|
|
181
256
|
* `MKCOL` now integrates better with propertystorage plugins.
|
|
257
|
+
* #623: Remove need of temporary files when working with Range requests.
|
|
258
|
+
(@dratini0)
|
|
182
259
|
* The zip release ships with [sabre/vobject 3.4.2][vobj],
|
|
183
260
|
[sabre/http 4.0.0-alpha1][http], [sabre/event 2.0.1][evnt],
|
|
184
261
|
[sabre/uri 1.0.0][uri] and [sabre/xml 0.4.3][xml].
|
|
@@ -237,6 +314,23 @@ ChangeLog
|
|
|
237
314
|
* #193: Fix `Sabre\DAV\FSExt\Directory::getQuotaInfo()` on windows.
|
|
238
315
|
|
|
239
316
|
|
|
317
|
+
2.1.9 (2016-01-25)
|
|
318
|
+
------------------
|
|
319
|
+
|
|
320
|
+
* #674: PHP7 support (@DeepDiver1975).
|
|
321
|
+
* The zip release ships with [sabre/vobject 3.5.0][vobj],
|
|
322
|
+
[sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
2.1.8 (2016-01-04)
|
|
326
|
+
------------------
|
|
327
|
+
|
|
328
|
+
* #729: Fixed a caching problem in the Tree object.
|
|
329
|
+
* #740: Bugs in `migrate20.php` script.
|
|
330
|
+
* The zip release ships with [sabre/vobject 3.4.8][vobj],
|
|
331
|
+
[sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
|
|
332
|
+
|
|
333
|
+
|
|
240
334
|
2.1.7 (2015-09-05)
|
|
241
335
|
------------------
|
|
242
336
|
|
|
@@ -2070,7 +2164,9 @@ ChangeLog
|
|
|
2070
2164
|
|
|
2071
2165
|
* First release!
|
|
2072
2166
|
* Passes litmus: basic, http and copymove test.
|
|
2073
|
-
* Fully working in Finder and DavFSv2
|
|
2167
|
+
* Fully working in Finder and DavFSv2.
|
|
2168
|
+
|
|
2169
|
+
Project started: 2007-12-13
|
|
2074
2170
|
|
|
2075
2171
|
|
|
2076
2172
|
[vobj]: http://sabre.io/vobject/
|
data/Gemfile
CHANGED
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
gem 'tilia-vobject', '>= 4.0.0-alpha4'
|
|
5
|
-
gem 'tilia-event', '~> 2.0'
|
|
6
|
-
gem 'tilia-xml', '~> 1.2'
|
|
7
|
-
gem 'tilia-http', '~> 4.1'
|
|
8
|
-
gem 'tilia-uri', '~> 1.0'
|
|
9
|
-
|
|
10
|
-
# External dependencies
|
|
11
|
-
gem 'activesupport', '~> 4.2'
|
|
12
|
-
gem 'sys-filesystem', '~> 1.1'
|
|
13
|
-
gem 'sequel', '~> 4.29'
|
|
14
|
-
gem 'sqlite3', '~> 1.3'
|
|
15
|
-
gem 'mysql2', '~> 0.4'
|
|
16
|
-
gem 'chronic', '~> 0.10'
|
|
17
|
-
gem 'mail', '~> 2.6'
|
|
18
|
-
gem 'rchardet', '~>1.6'
|
|
3
|
+
gemspec
|
|
19
4
|
|
|
20
5
|
# Testing
|
|
21
6
|
gem 'rake'
|
data/Gemfile.lock
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
tilia-dav (3.1.1)
|
|
5
|
+
activesupport (>= 4.0)
|
|
6
|
+
chronic (~> 0.10)
|
|
7
|
+
mail (~> 2.6)
|
|
8
|
+
mysql2 (~> 0.4)
|
|
9
|
+
rchardet (~> 1.6)
|
|
10
|
+
sequel (~> 4.29)
|
|
11
|
+
sqlite3 (~> 1.3)
|
|
12
|
+
sys-filesystem (~> 1.1)
|
|
13
|
+
tilia-event (~> 2.0)
|
|
14
|
+
tilia-http (~> 4.1)
|
|
15
|
+
tilia-uri (~> 1.0)
|
|
16
|
+
tilia-vobject (~> 4.0.2)
|
|
17
|
+
tilia-xml (~> 1.2)
|
|
18
|
+
|
|
1
19
|
GEM
|
|
2
20
|
remote: https://rubygems.org/
|
|
3
21
|
specs:
|
|
@@ -7,9 +25,7 @@ GEM
|
|
|
7
25
|
minitest (~> 5.1)
|
|
8
26
|
thread_safe (~> 0.3, >= 0.3.4)
|
|
9
27
|
tzinfo (~> 1.1)
|
|
10
|
-
ast (2.
|
|
11
|
-
astrolabe (1.3.1)
|
|
12
|
-
parser (~> 2.2)
|
|
28
|
+
ast (2.2.0)
|
|
13
29
|
chronic (0.10.2)
|
|
14
30
|
docile (1.1.5)
|
|
15
31
|
ethon (0.8.1)
|
|
@@ -20,26 +36,25 @@ GEM
|
|
|
20
36
|
libxml-ruby (2.8.0)
|
|
21
37
|
mail (2.6.3)
|
|
22
38
|
mime-types (>= 1.16, < 3)
|
|
23
|
-
mime-types (2.99)
|
|
39
|
+
mime-types (2.99.1)
|
|
24
40
|
minitest (5.8.4)
|
|
25
41
|
mysql2 (0.4.2)
|
|
26
|
-
parser (2.
|
|
27
|
-
ast (
|
|
42
|
+
parser (2.3.0.6)
|
|
43
|
+
ast (~> 2.2)
|
|
28
44
|
powerpack (0.1.1)
|
|
29
45
|
rack (1.6.4)
|
|
30
|
-
rainbow (2.
|
|
31
|
-
rake (10.
|
|
46
|
+
rainbow (2.1.0)
|
|
47
|
+
rake (10.5.0)
|
|
32
48
|
rchardet (1.6.1)
|
|
33
|
-
rubocop (0.
|
|
34
|
-
|
|
35
|
-
parser (>= 2.2.3.0, < 3.0)
|
|
49
|
+
rubocop (0.37.2)
|
|
50
|
+
parser (>= 2.3.0.4, < 3.0)
|
|
36
51
|
powerpack (~> 0.1)
|
|
37
52
|
rainbow (>= 1.99.1, < 3.0)
|
|
38
53
|
ruby-progressbar (~> 1.7)
|
|
39
|
-
|
|
54
|
+
unicode-display_width (~> 0.3)
|
|
40
55
|
ruby-progressbar (1.7.5)
|
|
41
|
-
sequel (4.
|
|
42
|
-
simplecov (0.11.
|
|
56
|
+
sequel (4.31.0)
|
|
57
|
+
simplecov (0.11.2)
|
|
43
58
|
docile (~> 1.1.0)
|
|
44
59
|
json (~> 1.8)
|
|
45
60
|
simplecov-html (~> 0.10.0)
|
|
@@ -48,55 +63,43 @@ GEM
|
|
|
48
63
|
sys-filesystem (1.1.5)
|
|
49
64
|
ffi
|
|
50
65
|
thread_safe (0.3.5)
|
|
51
|
-
tilia-event (2.0.2)
|
|
52
|
-
activesupport (
|
|
53
|
-
tilia-http (4.1
|
|
54
|
-
activesupport (
|
|
66
|
+
tilia-event (2.0.2.1)
|
|
67
|
+
activesupport (>= 4.0)
|
|
68
|
+
tilia-http (4.2.1)
|
|
69
|
+
activesupport (>= 4.0)
|
|
55
70
|
rack (~> 1.6)
|
|
56
71
|
rchardet (~> 1.6)
|
|
57
72
|
tilia-event (~> 2.0)
|
|
58
73
|
tilia-uri (~> 1.0)
|
|
59
74
|
typhoeus (~> 0.8)
|
|
60
|
-
tilia-uri (1.0.1)
|
|
61
|
-
activesupport (
|
|
62
|
-
tilia-vobject (4.0.
|
|
63
|
-
activesupport (
|
|
75
|
+
tilia-uri (1.0.1.1)
|
|
76
|
+
activesupport (>= 4.0)
|
|
77
|
+
tilia-vobject (4.0.2)
|
|
78
|
+
activesupport (>= 4.0)
|
|
64
79
|
mail (~> 2.6)
|
|
65
80
|
rchardet (~> 1.6)
|
|
66
|
-
tilia-xml (~> 1.
|
|
81
|
+
tilia-xml (~> 1.3)
|
|
67
82
|
tzinfo (~> 1.2)
|
|
68
|
-
tilia-xml (1.
|
|
69
|
-
activesupport (
|
|
70
|
-
libxml-ruby (
|
|
71
|
-
tilia-uri (~> 1.0)
|
|
72
|
-
tins (1.6.0)
|
|
83
|
+
tilia-xml (1.3.0)
|
|
84
|
+
activesupport (>= 4.0)
|
|
85
|
+
libxml-ruby (>= 2.8)
|
|
86
|
+
tilia-uri (~> 1.0, >= 1.0.1.1)
|
|
73
87
|
typhoeus (0.8.0)
|
|
74
88
|
ethon (>= 0.8.0)
|
|
75
89
|
tzinfo (1.2.2)
|
|
76
90
|
thread_safe (~> 0.1)
|
|
91
|
+
unicode-display_width (0.3.1)
|
|
77
92
|
yard (0.8.7.6)
|
|
78
93
|
|
|
79
94
|
PLATFORMS
|
|
80
95
|
ruby
|
|
81
96
|
|
|
82
97
|
DEPENDENCIES
|
|
83
|
-
activesupport (~> 4.2)
|
|
84
|
-
chronic (~> 0.10)
|
|
85
|
-
mail (~> 2.6)
|
|
86
98
|
minitest (~> 5.8)
|
|
87
|
-
mysql2 (~> 0.4)
|
|
88
99
|
rake
|
|
89
|
-
rchardet (~> 1.6)
|
|
90
100
|
rubocop (~> 0.34)
|
|
91
|
-
sequel (~> 4.29)
|
|
92
101
|
simplecov (~> 0.10)
|
|
93
|
-
|
|
94
|
-
sys-filesystem (~> 1.1)
|
|
95
|
-
tilia-event (~> 2.0)
|
|
96
|
-
tilia-http (~> 4.1)
|
|
97
|
-
tilia-uri (~> 1.0)
|
|
98
|
-
tilia-vobject (>= 4.0.0.pre.alpha4)
|
|
99
|
-
tilia-xml (~> 1.2)
|
|
102
|
+
tilia-dav!
|
|
100
103
|
yard (~> 0.8)
|
|
101
104
|
|
|
102
105
|
BUNDLED WITH
|
data/LICENSE
CHANGED
data/LICENSE.sabre
CHANGED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# Addressbook/CardDAV server example
|
|
3
|
+
#
|
|
4
|
+
# This server features CardDAV support
|
|
5
|
+
|
|
6
|
+
# Expected to be called "bundle exec examples/addressbookserver.rb"
|
|
7
|
+
$LOAD_PATH.unshift './lib'
|
|
8
|
+
|
|
9
|
+
require 'tilia/dav'
|
|
10
|
+
require 'rack'
|
|
11
|
+
require 'yaml'
|
|
12
|
+
require 'sequel'
|
|
13
|
+
|
|
14
|
+
Time.zone = 'Berlin'
|
|
15
|
+
|
|
16
|
+
# Load databases
|
|
17
|
+
database_file = File.join(File.dirname(__FILE__), 'database.yml')
|
|
18
|
+
fail 'could not load database file for mysql database' unless File.exist?(database_file)
|
|
19
|
+
config = YAML.load(File.read(database_file))
|
|
20
|
+
database = config.delete(:database)
|
|
21
|
+
sequel = Sequel.mysql2(database, config)
|
|
22
|
+
|
|
23
|
+
app = proc do |env|
|
|
24
|
+
# Backends
|
|
25
|
+
auth_backend = Tilia::Dav::Auth::Backend::Sequel.new(sequel)
|
|
26
|
+
principal_backend = Tilia::DavAcl::PrincipalBackend::Sequel.new(sequel)
|
|
27
|
+
carddav_backend = Tilia::CardDav::Backend::Sequel.new(sequel)
|
|
28
|
+
|
|
29
|
+
# Setting up the directory tree //
|
|
30
|
+
nodes = [
|
|
31
|
+
Tilia::DavAcl::PrincipalCollection.new(principal_backend),
|
|
32
|
+
Tilia::CardDav::AddressBookRoot.new(principal_backend, carddav_backend)
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
# The object tree needs in turn to be passed to the server class
|
|
36
|
+
server = Tilia::Dav::Server.new(env, nodes)
|
|
37
|
+
|
|
38
|
+
# Plugins
|
|
39
|
+
server.add_plugin(Tilia::Dav::Auth::Plugin.new(auth_backend))
|
|
40
|
+
server.add_plugin(Tilia::Dav::Browser::Plugin.new)
|
|
41
|
+
server.add_plugin(Tilia::CardDav::Plugin.new)
|
|
42
|
+
server.add_plugin(Tilia::DavAcl::Plugin.new)
|
|
43
|
+
server.add_plugin(Tilia::Dav::Sync::Plugin.new)
|
|
44
|
+
|
|
45
|
+
# And off we go!
|
|
46
|
+
server.exec
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
Rack::Handler::WEBrick.run app
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# CalDAV server example
|
|
3
|
+
#
|
|
4
|
+
# This server features CalDAV support
|
|
5
|
+
|
|
6
|
+
# Expected to be called "bundle exec examples/calendarserver.rb"
|
|
7
|
+
$LOAD_PATH.unshift './lib'
|
|
8
|
+
|
|
9
|
+
require 'tilia/dav'
|
|
10
|
+
require 'rack'
|
|
11
|
+
require 'yaml'
|
|
12
|
+
require 'sequel'
|
|
13
|
+
|
|
14
|
+
Time.zone = 'Berlin'
|
|
15
|
+
|
|
16
|
+
# Load databases
|
|
17
|
+
database_file = File.join(File.dirname(__FILE__), 'database.yml')
|
|
18
|
+
fail 'could not load database file for mysql database' unless File.exist?(database_file)
|
|
19
|
+
config = YAML.load(File.read(database_file))
|
|
20
|
+
database = config.delete(:database)
|
|
21
|
+
sequel = Sequel.mysql2(database, config)
|
|
22
|
+
|
|
23
|
+
app = proc do |env|
|
|
24
|
+
root = Tilia::Dav::Fs::Directory.new(testserver_root)
|
|
25
|
+
server = Tilia::Dav::Server.new(env, [root])
|
|
26
|
+
|
|
27
|
+
server.add_plugin(Tilia::Dav::Browser::Plugin.new)
|
|
28
|
+
|
|
29
|
+
server.exec
|
|
30
|
+
|
|
31
|
+
# Backends
|
|
32
|
+
auth_backend = Tilia::Dav::Auth::Backend::Sequel.new(sequel)
|
|
33
|
+
principal_backend = Tilia::DavAcl::PrincipalBackend::Sequel.new(sequel)
|
|
34
|
+
calendar_backend = Tilia::CalDav::Backend::Sequel.new(sequel)
|
|
35
|
+
|
|
36
|
+
# Setting up the directory tree //
|
|
37
|
+
nodes = [
|
|
38
|
+
Tilia::CalDav::Principal::Collection.new(principal_backend),
|
|
39
|
+
Tilia::CalDav::CalendarRoot.new(principal_backend, calendar_backend)
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
# The object tree needs in turn to be passed to the server class
|
|
43
|
+
server = Tilia::Dav::Server.new(env, nodes)
|
|
44
|
+
|
|
45
|
+
# Plugins
|
|
46
|
+
server.add_plugin(Tilia::Dav::Auth::Plugin.new(auth_backend))
|
|
47
|
+
server.add_plugin(Tilia::Dav::Browser::Plugin.new)
|
|
48
|
+
server.add_plugin(Tilia::CalDav::Plugin.new)
|
|
49
|
+
server.add_plugin(Tilia::DavAcl::Plugin.new)
|
|
50
|
+
server.add_plugin(Tilia::Dav::Sync::Plugin.new)
|
|
51
|
+
server.add_plugin(Tilia::CalDav::Subscriptions::Plugin.new)
|
|
52
|
+
server.add_plugin(Tilia::CalDav::Schedule::Plugin.new)
|
|
53
|
+
|
|
54
|
+
# And off we go!
|
|
55
|
+
server.exec
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
Rack::Handler::WEBrick.run app
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# This is the best starting point if you're just interested in setting up a fileserver.
|
|
3
|
+
#
|
|
4
|
+
# Make sure that the 'public' and 'tmpdata' exists, with write permissions
|
|
5
|
+
# for your server.
|
|
6
|
+
|
|
7
|
+
# Expected to be called "bundle exec examples/minimal.rb"
|
|
8
|
+
$LOAD_PATH.unshift './lib'
|
|
9
|
+
|
|
10
|
+
require 'tilia/dav'
|
|
11
|
+
require 'rack'
|
|
12
|
+
require 'yaml'
|
|
13
|
+
require 'sequel'
|
|
14
|
+
|
|
15
|
+
Time.zone = 'Berlin'
|
|
16
|
+
|
|
17
|
+
testserver_root = File.join(File.dirname(__FILE__), 'testserver_root')
|
|
18
|
+
Dir.mkdir(testserver_root) unless File.exist?(testserver_root)
|
|
19
|
+
testserver_tmp = File.join(File.dirname(__FILE__), 'testserver_tmp')
|
|
20
|
+
Dir.mkdir(testserver_tmp) unless File.exist?(testserver_tmp)
|
|
21
|
+
|
|
22
|
+
fail "could not create root directory #{testserver_root}" unless File.directory?(testserver_root)
|
|
23
|
+
fail "could not create root directory #{testserver_root}" unless File.directory?(testserver_tmp)
|
|
24
|
+
|
|
25
|
+
app = proc do |env|
|
|
26
|
+
# Create the root node
|
|
27
|
+
root = Tilia::Dav::Fs::Directory.new(testserver_root)
|
|
28
|
+
|
|
29
|
+
# The rootnode needs in turn to be passed to the server class
|
|
30
|
+
server = Tilia::Dav::Server.new(env, [root])
|
|
31
|
+
server.debug_exceptions = true
|
|
32
|
+
|
|
33
|
+
# Support for LOCK and UNLOCK
|
|
34
|
+
lock_backend = Tilia::Dav::Locks::Backend::File.new(testserver_tmp + '/locksdb')
|
|
35
|
+
lock_plugin = Tilia::Dav::Locks::Plugin.new(lock_backend)
|
|
36
|
+
server.add_plugin(lock_plugin)
|
|
37
|
+
|
|
38
|
+
# Support for html frontend
|
|
39
|
+
browser = Tilia::Dav::Browser::Plugin.new
|
|
40
|
+
server.add_plugin(browser)
|
|
41
|
+
|
|
42
|
+
# Automatically guess (some) contenttypes, based on extesion
|
|
43
|
+
server.add_plugin(Tilia::Dav::Browser::GuessContentType.new)
|
|
44
|
+
|
|
45
|
+
# Authentication backend
|
|
46
|
+
auth_backend = Tilia::Dav::Auth::Backend::File.new(testserver_tmp + '.htdigest')
|
|
47
|
+
auth = Tilia::Dav::Auth::Plugin.new(auth_backend)
|
|
48
|
+
server.add_plugin(auth)
|
|
49
|
+
|
|
50
|
+
# Temporary file filter
|
|
51
|
+
temp_ff = Tilia::Dav::TemporaryFileFilterPlugin.new(testserver_tmp)
|
|
52
|
+
server.add_plugin(temp_ff)
|
|
53
|
+
|
|
54
|
+
server.exec
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
Rack::Handler::WEBrick.run app
|