High-performance file management over WebDAV / HTTP
C++ Python CMake C Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
cmake/modules
deps
dist
doc
include/davix
packaging
src
test
.gitignore
.gitmodules
CMakeLists.txt
CONTRIBUTORS
LICENSE
README.md
RELEASE-NOTES.md
cmake_uninstall.cmake.in
genversion.py
version.cmake.in

README.md

Davix

Davix aims to make the task of managing files over HTTP-based protocols simple. It is being developed by the IT-SDC-ID section at CERN, and while the project's purpose is its use on the CERN grid, the functionality offered is generic.

Documentation

Click here to view the documentation of the latest released version, or here for the version under development. (devel branch)

HTTP File Management

HTTP is gaining popularity for file management tasks, beyond its traditional use for serving web pages. It is versatile enough to be fit for this purpose; PUT, MOVE and DELETE requests can be used for basic file manipulation, for example. (uploading, moving, and deleting a file, respectively)

Some common file-management operations are not possible to do with plain HTTP, however, which is why the WebDAV extensions were developed, which davix supports.

Davix also supports a plethora of authentication methods:

  • x509 user certificate
  • VOMS proxy
  • RFC proxy with VOMS extensions support
  • username / password
  • AWS S3 compatible services
  • Microsoft Azure compatible services

Usage

Davix provides a shared library as well as a few command line tools. The library offers two sets of APIs, a file-oriented and a POSIX-like interface.

Here are some example invocations of the command-line tools.

# upload a file using a VOMS proxy
davix-put myfile https://someserver/dir/myfile -E /tmp/x509up_u1000
# download a file from an Amazon S3 bucket
davix-get https://mybucket.s3.amazonaws.com/somefile --s3accesskey [..] --s3secretkey [..]
# do an ls on a WebDAV-enabled server
davix-ls https://someserver/dir

Compiling

  1. Install the necessary dependencies:

    • cmake
    • libxml2-devel
    • openssl-devel
  2. Run the following commands. If you also want to compile the unit tests, add -DUNIT_TESTS=TRUE to the cmake invocation.

git clone https://github.com/cern-it-sdc-id/davix.git
cd davix
git submodule update --recursive --init
mkdir build && cd build
cmake ..
make

You can now try running an example command:

./src/tools/davix-get https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.0.1

Contact

Suggestions and patches are more than welcome. You can send an email to the davix-devel CERN mailing list, or contact directly the current maintainer.