Skip to content

GerbenAaltink/gdav

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7f176d7 · Aug 21, 2024

History

32 Commits
Dec 11, 2021
Aug 21, 2024
Jan 6, 2022
Aug 21, 2024
Dec 23, 2021
Dec 21, 2021
Dec 21, 2021
Dec 21, 2021
Dec 21, 2021
Dec 11, 2021
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Aug 21, 2024
Dec 11, 2021
Dec 19, 2021
Jan 6, 2022
Dec 11, 2021
Dec 21, 2021
Dec 21, 2021
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Dec 14, 2021
Dec 14, 2021
Dec 23, 2021
Dec 23, 2021
Jan 6, 2022
Jan 6, 2022
Jan 6, 2022
Dec 11, 2021
Aug 21, 2024
Dec 21, 2021
Jan 6, 2022
Jan 6, 2022
Aug 21, 2024
Dec 14, 2021
Dec 22, 2021
Dec 21, 2021
Dec 14, 2021
Aug 21, 2024
Dec 21, 2021

Repository files navigation

WebDav server written in C by Gerben Aaltink

WebDav server based on selectors. Goals:

  • concurrency without blocking
  • low memory footprint
  • compatible with gfs (Thunar file manager build-in client on Linux)
  • compatible with cadaver (CLI webdav client on Linux)

All operations are performed within one thread. By smart chunking requests do not block eachother.

Usage

Make sure gcc is installed. You can check this by executing gcc -v. This project is tested with gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04). Execute in root: make run. This will create an executable named httpc. For debugging:

  • httpc 8888 --debug Other parameters are mentioned at startup. You can now access dav://localhost:8888/ in your file manager. But probably you'll need to create a user first.

User management

  • Create: ./httpc useradd
  • Delete: ./httpc userdel [username] argument is optional.
  • List: ./httpc userlist
  • Update: ./httpc useredit

Supported methods:

  • PROPFIND
  • PUT
  • DELETE
  • MKCOL
  • GET
  • OPTIONS
  • HEAD

Missing methods:

  • MOVE
  • COPY
  • LOCK

Backlog:

  • Add created timestamp to PROPFIND
  • Add last modified timestamp to PROPFIND
  • Add disk usage information to PROPFIND
  • Fix PROPFIND root directory. / does not work.
  • Make index page more beautiful. Also sort files
  • Lock meganism
  • Create gist for Mimetype
  • Create gist for url encoder/decoder
  • PUT on non-existing parent path crashes
  • Clean up request.c (Range header bug, strcpy for body should be memcpy, received is unused, tokenizedData can be pointer(saves a copy), remove commented code)
  • Remove warnings user.c
  • .. protection
  • if first parameter starts with -- do not parse port
  • Request parsing crash if request top line corrupt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published