1
0
Fork 0
mirror of https://github.com/vbatts/srvdav.git synced 2024-11-25 01:45:40 +00:00
dangerously simple webdav server for a local filesystem
Find a file
2018-04-01 11:08:20 -04:00
vendor vendoring and caldav 2018-04-01 11:08:20 -04:00
Gopkg.lock vendoring and caldav 2018-04-01 11:08:20 -04:00
Gopkg.toml vendoring and caldav 2018-04-01 11:08:20 -04:00
LICENSE Initial commit 2016-09-22 10:19:43 -04:00
main.go vendoring and caldav 2018-04-01 11:08:20 -04:00
README.md README: add mount.davfs example 2016-09-22 10:26:24 -04:00

srvdav

dangerously simple webdav server for a local filesystem

Building

go get github.com/vbatts/srvdav

Basic use

This daemon can serve up WebDAV for a local directory without any auth, nor encryption. DO NOT DO THIS

More proper use

Produce an x.509 certificate and accompanying key. For development use case use can use the generator in golang's stdlib.

> go run $(go env GOROOT)/src/crypto/tls/generate_cert.go -h
> go run $(go env GOROOT)/src/crypto/tls/generate_cert.go -host="localhost,example.com"
2016/09/22 09:46:19 written cert.pem
2016/09/22 09:46:19 written key.pem

Produce a password list for users. The htpasswd(1) utility creates the password file nicely.

> htpasswd -bc srvdav.passwd vbatts topsecretpassword

Then launch srvdav with these credentials.

> mkdir -p ./test/
> srvdav -htpasswd ./srvdav.passwd -cert ./cert.pem -key ./key.pem
Serving HTTPS:// :9999
[...]

Accompanying Clients

There are a number of webdav clients.

ChromeOS

For my specific use case, I am working with ChromeOS and there is a WebDAV Storage Provider.

Linux

For Linux hosts, there is a package commonly davfs2, that provides a mount.davfs command. See mount.davfs(8) man page for more information.

Basic example:

[vbatts@valse] {master} ~$ sudo mount.davfs https://bananaboat.usersys:9999/ ./x
Please enter the username to authenticate with server
https://bananaboat.usersys:9999/ or hit enter for none.
  Username: vbatts
Please enter the password to authenticate user vbatts with server
https://bananaboat.usersys:9999/ or hit enter for none.
  Password:  
mount.davfs: the server certificate is not trusted
  issuer:      Acme Co
  subject:     Acme Co
  identity:    localhost
  fingerprint: ce:19:a6:e7:0a:85:c2:01:fb:71:a6:bf:dd:56:3a:47:30:a8:7a:37
You only should accept this certificate, if you can
verify the fingerprint! The server might be faked
or there might be a man-in-the-middle-attack.
Accept certificate for this session? [y,N] y
[vbatts@valse] {master} ~$ ls x/file
x/file
[vbatts@valse] {master} ~$ cat !$
cat x/file
[vbatts@valse] {master} ~$ echo Howdy > !$
echo Howdy > x/file
[vbatts@valse] {master} ~$ cat x/file
Howdy
[vbatts@valse] {master} ~$ sudo umount ./x
/sbin/umount.davfs: waiting while mount.davfs (pid 8931) synchronizes the cache .. OK