Git Product home page Git Product logo

fusedav's Introduction

Fusedav

Unsupported

Fusedav Client

This is a fuse-based DAV client with extensions for performance. This will run against any standard DAV implementation, i.e. pywebdav (see tests).

Production (CI/CD) Build

Merging anything to the master branch will trigger GitHub Actions to build a production release.

The RPM(s) are published as a Release.

Container image(s) are published as Packages. Images are generally accessed as ghcr.io/pantheon-systems/fusedav:0.0.0, where 0.0.0 is the desired version.

RPM Retrieval / Installation

Note that, while the RPM version is removed from the filename entirely, the RPM release .fc28 suffix is retained. This is being done to allow for use of other base images/distributions in the future.

# Install latest release
curl -fsSL https://github.com/pantheon-systems/fusedav/releases/latest/download/fusedav.fc28.x86_64.rpm \
    -o fusedav.x86_64.rpm \
  && dnf install -y fusedav.x86_64.rpm
  
# Install specific release
RELEASE_NAME=v0.0.0-branch.1
curl -fsSL "https://github.com/pantheon-systems/fusedav/releases/download/${RELEASE_NAME}/fusedav.fc28.x86_64.rpm" \
    -o fusedav.x86_64.rpm \
  && dnf install -y fusedav.x86_64.rpm
  
# Install specific release, alternate method
RELEASE_NAME=v0.0.0-branch.1
curl -fsSL "https://api.github.com/repos/pantheon-systems/fusedav/releases/tags/${RELEASE_NAME}" \
  | jq ".assets[] | select(.name==\"fusedav.fc28.x86_64.rpm\") | .browser_download_url" \
  | xargs curl -o fusedav.x86_64.rpm -fsSL \
  && dnf install -y fusedav.x86_64.rpm

Development Build

Development Image Build

Building a local container image requires only:

  1. a local Docker (or Podman) installation, and
  2. autotag in the PATH. PATH.
scripts/compute-version.sh | tee new-version.sh
docker build --progress plain -t fusedav .

Development RPM Build

Building a set of RPMs within a containerized environment requires only:

  1. a local Docker (or Podman) installation, and
  2. autotag in the PATH.

The generated RPMs will be written to the extract directory.

scripts/compute-version.sh | tee new-version.sh
docker build --progress plain --target extract . --output=extract

Development Code Build

  1. Clone the git repository.
    • You may have done this already.
    • git clone git://github.com/pantheon-systems/fusedav.git
  2. Install build dependencies.
    • See BuildRequires in fusedav-template.spec for required Fedora Linux 28 packages.
    • You may have done this already.
    • ALTERNATIVELY, open this git repository in Visual Studio Code with the ms-vscode-remote.remote-containers extension active and work within the fedora28 (default) dev container.
  3. Compile the code.
    • git clean -f -x -d && ./autogen.sh && ./configure && make
    • The executable will be written to src/fusedav.

Usage

Use the -V flag to see libraries.

$ src/fusedav -V
fusedav version 2.0.42-bccf93b
LevelDB version 1.20
libcurl/7.59.0 OpenSSL/1.1.0i zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.4) libssh/0.8.5/openssl/zlib nghttp2/1.32.1
FUSE library version: 2.9.7

libcurl and OpenSSL

FuseDAV requires libcurl linked with OpenSSL. On Fedora versions before 27 the provided libcurl is linked against NSS and you need to provide your own libcurl linked against OpenSSL.

Contributing

  1. Fork it.
  2. Create a branch (git checkout -b my_new_features).
  3. Commit your changes (git commit -am "Adding a nice new feature").
  4. Push to the branch (git push origin my_new_feature).
  5. Open a Pull Request with relevant information.

fusedav's People

Contributors

davidstrauss avatar djschaap avatar greg-1-anderson avatar hornswoggles avatar jerryblakley avatar joemiller avatar kibra avatar kporras07 avatar mufucaw avatar nstielau avatar playmaker-pk avatar poettering avatar sebest avatar spheromak avatar tokkee avatar winmillwill avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fusedav's Issues

open with O_CREAT in second argument needs 3 arguments

Compiling on Arch with gcc-5.1 and glibc 2.21 I get this error:

In file included from /usr/include/fcntl.h:302:0,
             from /usr/include/fuse/fuse.h:28,
             from stats.c:23:
In function ‘open’,
    inlined from ‘dump_stats’ at stats.c:145:12: 
/usr/include/bits/fcntl2.h:50:4: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
    __open_missing_mode ();

The fix is to add a mode to the open call in stats.c on line 145

-        fd = open(stat_path, O_CREAT | O_WRONLY | O_TRUNC);
+        fd = open(stat_path, O_CREAT | O_WRONLY | O_TRUNC, 0600);

Broken ArchLinux build

A build on ArchLinux segfaults even on a run with no arguments. It's built with

  • fuse 2.9.2
  • neon 0.29.6
  • leveldb 1.9
  • systemd 197

This is how I bulit it:

LEVELDB_LIBS='-L/usr/lib -lleveldb' LEVELDB_CFLAGS='-I/usr/include' \
     CFLAGS=-g ./configure --prefix=/usr

This is what gdb responded with:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
*** Error in `/home/damjan/X/src/fusedav-git-build/src/fusedav': free(): invalid pointer: 0xbffff654 ***
======= Backtrace: =========
/usr/lib/libc.so.6(+0x764b2)[0xb7d5b4b2]
/usr/lib/libc.so.6(+0x77200)[0xb7d5c200]
/home/damjan/X/src/fusedav-git-build/src/fusedav[0x804f012]
/usr/lib/libc.so.6(__libc_start_main+0xf5)[0xb7cfe825]
/home/damjan/X/src/fusedav-git-build/src/fusedav[0x804ac01]

getting error with some configure file lines

Hi..I'm getting error with these require check dependencies lines

./configure: line 6158: syntax error near unexpected token `SYSTEMD,'
./configure: line 6158: `PKG_CHECK_MODULES(SYSTEMD,  libsystemd-journal  )'


I've commented and imported all these lines

#PKG_CHECK_MODULES(SYSTEMD,  libsystemd-journal  )
#PKG_CHECK_MODULES(LEVELDB,  leveldb )
#PKG_CHECK_MODULES(CURL,  libcurl >= 7.24.0 )
#PKG_CHECK_MODULES(FUSE,  fuse >= 2.8 )
#PKG_CHECK_MODULES(ZLIB,  zlib >= 1.2.5 )
#PKG_CHECK_MODULES(GLIB,  glib-2.0 >= 1.2.10 )
#PKG_CHECK_MODULES(URIPARSER,  liburiparser >= 0.7.5 )

and the configure step runs ok, now I need check than these dependencies are solved

sudo apt-get install libglib2.0-dev

 make
make  all-recursive
make[1]: Entering directory `/root/fusedav/fusedav'
Making all in src
make[2]: Entering directory `/root/fusedav/fusedav/src'
gcc -DHAVE_CONFIG_H -I. -I..             -DFUSE_USE_VERSION=26 -DINJECT_ERRORS=0 -g -O2 -std=c99 -Wall -W -Wextra -pedantic -pipe -Wformat -Wold-style-definition -Wdeclaration-after-statement -Wfloat-equal -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Winline -MT fusedav-fusedav.o -MD -MP -MF .deps/fusedav-fusedav.Tpo -c -o fusedav-fusedav.o `test -f 'fusedav.c' || echo './'`fusedav.c
fusedav.c:32:18: fatal error: glib.h: No such file or directory
 #include <glib.h>
                  ^
compilation terminated.



seems than I'm having some troubles with glib, I'm trying to compile fusedav by hand because I'm trying to run it on a ubuntu server, but everytime than I tried to connect to the webdav server (it's livedrive) these only freeze (don't show any alert or message, just keep as if it was trying to connect, pass 2 hours and it's still like it was freeze, any message even when I run in debug mode)

hope you can help me, I really need mount a webdav folder in my server

thank you so much!!!...

can't find libleveldb when compiling on debian

Hi, i'm trying to compile on debian wheezy, and i got an error :

checking for LEVELDB... no
configure: error: Package requirements ( leveldb ) were not met:

No package 'leveldb' found

The package is installed, backported from debian testing :

apt-cache show libleveldb-dev

Package: libleveldb-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 816
Maintainer: Alessio Treglia [email protected]
Architecture: amd64
Multi-Arch: same
Source: leveldb
Version: 1.15.0-1bpo70+1
Depends: libleveldb1 (= 1.15.0-1
bpo70+1)
Suggests: leveldb-doc
Description-en: fast key-value storage library (development files)
LevelDB is a fast key-value storage library written at Google that
provides an ordered mapping from string keys to string values.
.
This package provides the development files.
Homepage: http://code.google.com/p/leveldb/

apt-cache show libleveldb1

Package: libleveldb1
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 363
Maintainer: Alessio Treglia [email protected]
Architecture: amd64
Multi-Arch: same
Source: leveldb
Version: 1.15.0-1~bpo70+1
Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libsnappy1, libstdc++6 (>= 4.1.1)
Pre-Depends: multiarch-support
Description-en: fast key-value storage library
LevelDB is a fast key-value storage library written at Google that
provides an ordered mapping from string keys to string values.
.

fusedav segfaults if group name specified in run_as_gid does not exist

Ran into this during COS work. It was very difficult to debug this issue. Led to a few days of time spent with trial and error and guessing at different settings. Not critical, probably, but would be good to try to fix this for our future selves.

To reproduce, set run_as_gid foo, and ensure there is no group named foo in the host or the container's /etc/group file . fusedav will segfault on startup without any useful log message as to why.

It should handle this gracefully. Ideally it would say "unknown group 'foo'" and exit with an error code.

No mount, no console logs, exits with status code 0

Hello. Such a great surprise to find that fusedav is being maintained.

I managed to compile 3.0.0 and I created configuration /etc/fusedav.conf:

[fusedav]
nodaemon=true

I have a problem that my mountpoint remains empty, and that the process exits without a message when I issue the following command:

fusedav http://127.0.0.1:10000/foo /mnt/fusedav -o conf=/etc/fusedav.conf

I also tried to replace http:// with dav://.

Here is output with the -V flag enabled.

# fusedav -V
fusedav version 
LevelDB version 1.23
libcurl/8.5.0 OpenSSL/3.1.4 zlib/1.3.1 brotli/1.1.0 c-ares/1.27.0 libidn2/2.3.4 nghttp2/1.58.0
FUSE library version: 2.9.9
fusermount version: 2.9.9
using FUSE kernel interface version 7.19

Is there anything I am overlooking and is there a way in which I can increase verbosity?

Just getting 255s

Hi there,

Arch User here. I was shopping around for a WebDAV file system layer that could do direct IO and found this project. Unfortunately after forking and building based on the AUR blueprint I now have the executables but all fusedav does is return 255. I also ran with -d but still, no output. Any ideas?

Thanks.

fusedav silently quits

Hi,

I compiled fusedav, but it silently quits to all commandline options, except -h, -V.

l@lolza:~/down/fusedav/src$ ./fusedav -V
fusedav version 2.0.ee02367
LevelDB version 1.17
libcurl/7.37.1 GnuTLS/3.2.16 zlib/1.2.8 libidn/1.28 librtmp/2.3
FUSE library version: 2.9.2
fusermount version: 2.9.2
using FUSE kernel interface version 7.19
l@lolza:~/down/fusedav/src$ 

This is how I try to connect to the remote server (which works with original (system bundled) fusedav):

l@lolza:~/down/fusedav/src$ ./fusedav -u admin -p mypasswoRd12 https://my2.mtoolsde.com:5002 /mnt/mtoolsde
l@lolza:~/down/fusedav/src$ 

I tired option -d, -f, but the same issue. It just gives back the command line after 4 seconds.

(but with the original fusedav client I get the error 405 PROPFIND method not allowed error message.
With nautilus I can connect with admin user, but not with 'INTRA\accountant' user. I tried a couple of other clients, but each of it has its own error. This project looks the most matured one)

Looking with wireshark, there is no packet going toward the remote server.
I would like to use the username 'INTRA\accountant' on the remote server.

Maybe I miss something obvious?
I'm on ubuntu system 15.04. I installed all dependency as detailed in this issue (last comment):
#185

Any idea?

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.