• Stars
    star
    101
  • Rank 338,166 (Top 7 %)
  • Language
    Rust
  • Created over 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

webdav server in rust

WEBDAV-SERVER

An implementation of a webdav server with support for user accounts, and switching uid/gid to those users accounts. That last feature is Linux-only, since the server is threaded and no other OSes have support for thread-local credentials.

Uses PAM authentication and local unix accounts.

This server does not implement logging. For now, it is assumed that most users of this software want to put an NGNIX or Apache reverse-proxy in front of it anyway, and that frontend can implement TLS, logging, enforcing a maximum number of connections, and timeouts.

This crate uses futures 0.3 and async/await, so the minimum rust compiler version is 1.39.

Features.

  • RFC4918: webdav, full support
  • RFC4331: webdav quota support (linux quota, NFS quota, statfs)
  • locking support (fake locking, enough for macOS and Windows clients)
  • can be case insensitive for Windows clients
  • files starting with a dot get the HIDDEN attribute on windows
  • optimizations for macOS (spotlight indexing disabled, thumbnail previews disabled, some light directory caching for ._ files)
  • partial put support
  • tested with Windows, macOS, Linux clients

Building.

By default the server builds with pam and quota support. If your OS does not support these one of features, use cargo command line options to disable all features and enable only the ones your OS supports.

For example, to build on OpenBSD, which does not have pam:

cargo build --release --no-default-features --features=quota

Configuration.

See the example webdav-server.toml file

There is also an example nginx proxy configuration.

Notes.

The built-in PAM client will add the client IP address to PAM requests. If the client IP adress is localhost (127/8 or ::1) then the content of the X-Forwarded-For header is used instead (if present) to allow for aforementioned frontend proxies.

Copyright and License.

More Repositories

1

webdavfs

Linux / OSX FUSE webdav filesystem. This filesystem behaves like a real network filesystem- no unnecessary copying of entire files.
Go
169
star
2

speedtest

HTML5 speedtest, javascript client and golang server. Responsive interface, can be used on desktop, tablets and phones. Uses the same algorithm as Ookla / speedtest.net, and gives approximately the same results.
Vue
90
star
3

webdav-handler-rs

webdav handler library for hyper, warp, actix-web or anything that can interface using the 'http' crate.
Rust
67
star
4

nntp-rs

NNTP server implementation in Rust. Diablo dhistory / spool compatible. WORK IN PROGRESS.
Rust
21
star
5

liblockfile

The standard lockfile library. Debian packaging is at https://github.com/miquels/liblockfile-debian.
C
13
star
6

hyper-tls-hack

tokio-tls + native-tls + hyper
Rust
6
star
7

mp4

MP4 library, CLI tool, server
Rust
4
star
8

curlyconf-rs

Configuration file parser (dhcpd.conf / named.conf style)
Rust
4
star
9

actix-web-ssl-test

Actix-web plaintext vs openssl vs native_tls, HTTP/1.1 vs HTTP/2, ab
Rust
4
star
10

notflix-server

Notflix backend
Go
2
star
11

delay_queue_split

Adds a split() method to tokio::time::DelayQueue
Rust
2
star
12

tink

A webbased video/media player
JavaScript
2
star
13

webnis

WebNIS - NIS is alive Jim, but not as we know it. REST server and libpam / libnss clients.
Rust
2
star
14

notflix-backend

Notflix backend
Rust
2
star
15

mm-memebot

Mattermost Meme Bot
Go
1
star
16

tokio-process-pty

A clone of tokio::process, with pty support.
Rust
1
star
17

adventofcode2021

Rust
1
star
18

async-wait-test

toying around with rust async/await, furures 0.1 compat, tokio, blocking i/o.
Rust
1
star
19

async-stream-rs

Produce items for a stream from an async closure
HTML
1
star
20

meme-client

MEME web frontend
JavaScript
1
star
21

notflix

Work in progress - doesn't do anything yet!
Vue
1
star
22

nara

Minimal rust async io runtime
Rust
1
star