GithubHelp home page GithubHelp logo

lulzzz / nwebdav Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ramondeklein/nwebdav

0.0 2.0 0.0 3.11 MB

.NET implementation of the WebDAV protocol

License: MIT License

C# 99.89% PowerShell 0.11%

nwebdav's Introduction

NWebDAV

.NET implementation of a WebDAV server.

Overview

I needed a WebDAV server implementation for C#, but I couldn't find an implementation that fulfilled my needs. That's why I wrote my own.

Requirements

  • Fast, scalable, robust with moderate memory usage.
  • Abstract data store, so it can be used for directories/files but also for any other data.
  • Abstract locking providers, so it can use in-memory locking (small servers) or Redis (large installations).
  • Flexible and extensible property management.
  • Fully supports .NET framework, Mono and the Core CLR.
  • Allows for various HTTP authentication and SSL support (basic authentication works).

WebDAV client on Windows Vista/7

The Windows Vista/7 WebDAV client is implemented poorly. We have support for this client since the 0.1.7 release.

  • It required the 'D' namespace prefix on all DAV related XML nodes. XML namespaces without prefixes are not supported.
  • It cannot deal with XML date time format (ISO 8601) in a decent manner. It processes the fraction part as milliseconds, which is wrong. Milliseconds can be between 0 and 999, where a fraction can have more than 3 digits. The difference is subtle. 2016-04-14T01:02:03.12 denotes 120ms, but it could be parsed as 12ms by Windows 7 clients. 2016-04-14T01:02:03.1234 denotes 123.4ms, but cannot be parsed when using integers. Windows 7 clients don't accept this format. For that reason we will not output more than 3 digits for the fraction part.

Windows 7 client might perform very bad when connecting to any WebDAV server (not related to this specific implementation). This is caused, because it tries to auto-detect any proxy server before any request. Refer to KB2445570 for more information.

Work in progress

This module is currently work-in-progress and shouldn't be used for production use yet. If you want to help, then let me know... The following features are currently missing:

  • Only the in-memory locking provider has been implemented yet.
  • Check if each call responds with the proper status codes (as defined in the WebDAV specification).
  • Recursive locking is not supported yet.
  • We should have compatibility flags that can be used to implement quirks for bad WebDAV clients. We can detect the client based on the User-Agent and provide support for it.

The current version seems to work fine to serve files using WebDAV on both Windows and OS X.

Contact

If you have any questions and/or problems, then you can submit an issue. For other remarks, you can also contact me via email at [email protected].

Donate

I never intended to make any profit for this code, but I received a request to add a donation link. So if you think that you want to donate to this project, then you can use the following button to donate to me via PayPal (don't feel obliged to do so).

Donate

nwebdav's People

Contributors

olederle avatar ramondeklein avatar yar229 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.