Bagage is the bridge between our users and garage, it enables them to synchronize files that matter for them from their computer to garage through WebDAV
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Quentin 93631b4e3d
Change part size to fix memory leak
7 days ago
.gitignore Change part size to fix memory leak 7 days ago
Dockerfile Fix the Dockerfile 2 weeks ago
README.md Add a README file 2 weeks ago
auth_basic.go Refactor the codebase 4 weeks ago
auth_ldap.go Add support for directory creation 4 weeks ago
auth_s3.go Refactor the codebase 4 weeks ago
config.go Refactor the codebase 4 weeks ago
error.go Refactor the codebase 4 weeks ago
go.mod Initial commit 4 weeks ago
go.sum Initial commit 4 weeks ago
main.go Refactor the codebase 4 weeks ago
middleware.go Refactor the codebase 4 weeks ago
s3_file.go Change part size to fix memory leak 7 days ago
s3_fs.go Fix renaming 2 weeks ago
s3_path.go Refactor the codebase 4 weeks ago
s3_stat.go Refactor the codebase 4 weeks ago
webdav.go Refactor the codebase 4 weeks ago

README.md

bagage

This is a technical preview, use it a your own risk, expect bugs and missing features.

Bagage will be a service to access your documents everywhere.

Currently, it is only a WebDAV to S3 proxy. Later, it may propose a web interface and support synchronization with the Nextcloud client.

how it works

bagage exposes a webdav endpoint behind an HTTP basic auth. Credentials provided through basic auth are used to authenticate on the LDAP server, then 2 keys garage_s3_access_key and garage_s3_secret_key are fetched from the user's LDAP profile to authenticate against the S3 server.

For now, these entries must be manually/externally added to the LDAP server prior using the service.

configuration

bagage is configured through environment variables. You can get all the keys and their default values in the config.go file.

running it

You need a S3 endpoint and a LDAP server running. Once you correctly set your environment variables, you can simply run it:

go run .

docker

A simple dockerfile is proposed to build a binary if you want.