# ls -l {data,server.php,public,vendor,composer*,sabre*}
-rw-r--r-- 1 root root 58 20. Jan 13:41 composer.json
-rw-r--r-- 1 root root 4205 20. Jan 13:44 composer.lock
-rw-r--r-- 1 root root 107 20. Jan 14:01 sabredav_install.php
-rw-r--r-- 1 root root 1192 20. Jan 14:22 server.php
data:
insgesamt 0
public:
insgesamt 4
-rw-r--r-- 1 root root 1192 20. Jan 14:23 server.php
vendor:
insgesamt 16
-rw-r--r-- 1 root root 182 20. Jan 13:56 autoload.php
drwxr-xr-x 2 root root 4096 20. Jan 13:44 bin
drwxr-xr-x 2 root root 4096 20. Jan 13:44 composer
drwxr-xr-x 4 root root 4096 20. Jan 13:44 sabre
# chown -R :www-data {data,server.php,public,vendor,composer*,sabre*}
# lynx --dump http://www.davsrv.de/public/server.php
# lynx --dump http://www.davsrv.de/server.php
<?php
use
Sabre\DAV;
// Files we need
require_once 'vendor/autoload.php';
// Now we're creating a whole bunch of objects
// Change public to something else, if you are using a different directory for your files
$rootDirectory = new DAV\FS\Directory('public');
// The server object is responsible for making sense out of the WebDAV protocol
$server = new DAV\Server($rootDirectory);
// If your server is not on your webroot, make sure the following line has the correct information
// ->setBaseUri('/~evert/mydavfolder'); // if its in some kind of home directory
// ->setBaseUri('/dav/server.php/'); // if you can't use mod_rewrite, use server.php as a base uri
// ->setBaseUri('/'); // ideally, SabreDAV lives on a root directory with mod_rewrite sending every request to server.php
// The lock manager is reponsible for making sure users don't overwrite each others changes. Change 'data' to a different
// directory, if you're storing your data somewhere else.
$lockBackend = new DAV\Locks\Backend\File('data/locks');
$lockPlugin = new DAV\Locks\Plugin($lockBackend);
$server->addPlugin($lockPlugin);
// All we need to do now, is to fire up the server
$server->exec();
?>
-> running `basic':
0. init.................. pass
1. begin................. pass
2. options............... pass
3. put_get............... pass
4. put_get_utf8_segment.. pass
5. mkcol_over_plain...... pass
6. delete................ pass
7. delete_null........... pass
8. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
...................... pass (with 1 warning)
9. mkcol................. pass
10. mkcol_again........... pass
11. delete_coll........... pass
12. mkcol_no_parent....... pass
13. mkcol_with_body....... pass
14. finish................ pass
<- summary for `basic': of 15 tests run: 15 passed, 0 failed. 100.0%
-> 1 warning was issued.
-> running `copymove':
0. init.................. pass
1. begin................. pass
2. copy_init............. pass
3. copy_simple........... FAIL (simple resource COPY:
409 Conflict)
4. copy_overwrite........ WARNING: COPY-on-existing fails with 412
...................... FAIL (COPY-on-existing with 'Overwrite: T': 409 Conflict)
5. copy_nodestcoll....... pass
6. copy_cleanup.......... pass
7. copy_coll............. FAIL (collection COPY `/webdav/litmus/ccsrc/' to `/webdav/litmus/ccdest/': 403 Forbidden)
8. move.................. FAIL (MOVE `/webdav/litmus/move' to `/webdav/litmus/movedest': 409 Conflict)
9. move_coll............. FAIL (collection COPY `/webdav/litmus/mvsrc/' to `/webdav/litmus/mvdest2/', depth infinity: 403 Forbidden)
10. move_cleanup.......... pass
11. finish................ pass
<- summary for `copymove': of 12 tests run: 7 passed, 5 failed. 58.3%
-> 1 warning was issued.
See debug.log for network/debug traces.
make: *** [check] Fehler 1
-> running `basic':
0. init.................. pass
1. begin................. FAIL (Could not create new collection `/webdav/server.php/litmus/' for tests: 409 Conflict
Server must allow `MKCOL /webdav/server.php/litmus/' for tests to proceed)
<- summary for `basic': of 2 tests run: 1 passed, 1 failed. 50.0%
See debug.log for network/debug traces.
make: *** [check] Fehler 1
# composer upgrade
[InvalidArgumentException]
Command "upgrade" is not defined.
# composer update
Loading composer repositories with package information
Updating dependencies
Nothing to install or update
Generating autoload files
litmus http://www.davsrv.de/webdav user password
-> running `basic':
0. init.................. pass
1. begin................. FAIL (Could not create new collection `/webdav/server.php/litmus/' for tests: 409 Conflict
Server must allow `MKCOL /webdav/server.php/litmus/' for tests to proceed)
<- summary for `basic': of 2 tests run: 1 passed, 1 failed. 50.0%
See debug.log for network/debug traces.
make: *** [check] Fehler 1
Now the litmustest looks like this. Are the errors and skips due to the use of lighttpd and as expected?$HTTP["host"] =~ "davsrv" {
# block 9
server.document-root = "/home/floogy/www/docs/www.davsrv.de"
accesslog.filename = "|/usr/sbin/cronolog /home/floogy/www/logs/%Y/%m/www.davsrv.access.log"
url.rewrite = (
"^/(.*)\.(.+)$" => "$0",
"^/(.+)/?$" => "/index.php/$1",
# 2
)
} # end of $HTTP["host"] =~ "davsrv"
$HTTP["host"] == "webdav.davsrv.de" {
# block 10
server.document-root = "/home/floogy/www/docs/www.davsrv.de"
accesslog.filename = "|/usr/sbin/cronolog /home/floogy/www/logs/%Y/%m/www.davsrv.access.log"
url.rewrite = (
"^/(.*)$" => "/server.php",
)
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/home/floogy/www/docs/www.davsrv.de/passwd.dav"
auth.require = (
"" => (
"method" => "basic",
"realm" => "dav",
"require" => "valid-user",
# 3
),
)
} # end of $HTTP["host"] == "webdav.davsrv.de"
-> running `basic':
0. init.................. pass
1. begin................. pass
2. options............... pass
3. put_get............... pass
4. put_get_utf8_segment.. pass
5. put_no_parent......... pass
6. mkcol_over_plain...... pass
7. delete................ pass
8. delete_null........... pass
9. delete_fragment....... pass
10. mkcol................. pass
11. mkcol_again........... pass
12. delete_coll........... pass
13. mkcol_no_parent....... pass
14. mkcol_with_body....... pass
15. finish................ pass
<- summary for `basic': of 16 tests run: 16 passed, 0 failed. 100.0%
-> running `copymove':
0. init.................. pass
1. begin................. pass
2. copy_init............. pass
3. copy_simple........... pass
4. copy_overwrite........ pass
5. copy_nodestcoll....... pass
6. copy_cleanup.......... pass
7. copy_coll............. pass
8. copy_shallow.......... pass
9. move.................. pass
10. move_coll............. pass
11. move_cleanup.......... pass
12. finish................ pass
<- summary for `copymove': of 13 tests run: 13 passed, 0 failed. 100.0%
-> running `props':
0. init.................. pass
1. begin................. pass
2. propfind_invalid...... pass
3. propfind_invalid2..... pass
4. propfind_d0........... pass
5. propinit.............. pass
6. propset............... FAIL (PROPPATCH on `/litmus/prop': http://webdav.davsrv.de/litmus/prop: 403 Forbidden
)
7. propget............... SKIPPED
8. propextended.......... pass
9. propmove.............. SKIPPED
10. propget............... SKIPPED
11. propdeletes........... SKIPPED
12. propget............... SKIPPED
13. propreplace........... SKIPPED
14. propget............... SKIPPED
15. propnullns............ SKIPPED
16. propget............... SKIPPED
17. prophighunicode....... SKIPPED
18. propget............... SKIPPED
19. propremoveset......... SKIPPED
20. propget............... SKIPPED
21. propsetremove......... SKIPPED
22. propget............... SKIPPED
23. propvalnspace......... SKIPPED
24. propwformed........... pass
25. propinit.............. pass
26. propmanyns............ FAIL (PROPPATCH on `/litmus/prop': http://webdav.davsrv.de/litmus/prop: 403 Forbidden
)
27. propget............... FAIL (No value given for property {http://example.com/kappa}somename)
28. propcleanup........... pass
29. finish................ pass
-> 16 tests were skipped.
<- summary for `props': of 14 tests run: 11 passed, 3 failed. 78.6%
See debug.log for network/debug traces.
1. begin................. FAIL (Could not create new collection `/litmus/' for tests: 401 Unauthorized
Server must allow `MKCOL /litmus/' for tests to proceed)
<- summary for `basic': of 2 tests run: 1 passed, 1 failed. 50.0%
> Now the litmustest looks like this. Are the errors and skips due to the use of lighttpd and as expected?
>
On Jan 20, 2013, at 8:23 PM, floogy <ggru...@web.de> wrote:
> Hi Evert,
>[...]
> Strange is, that all php files are interpreted but the server.php will be downloaded by wget, lynx or firefox while accessing through other subdomains then webdav.davsrv.de, e.g. likewww.davsrv.de/setup.php .
>
> Is this an security issue?
Files that go trough sabredav (including .php files) always get returned as their source. This is the expected behaviour. If you consider that a security problem, you shouldn't expose those php files through sabredav.
Evert
~/Downloads/litmus-0.10.5$ lynx -auth=myuser:mypassword --dump http://www.davsrv.de:80/server.php
Sabre\DAV\Exception\NotImplemented GET is only implemented on File
objects 1.8.2