reva

package module
v1.28.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 27, 2024 License: Apache-2.0 Imports: 2 Imported by: 23

README

License GoDoc Gitter chat Build Status Go Report Card FOSSA Status

Reva Logo

Reva is an interoperability platform consisting of several daemons written in Go. It acts as bridge between high-level clients (mobile, web, desktop) and the underlying storage (CephFS, EOS, local filesytems). It exports well-known APIs, like WebDAV, to faciliate access from these devices. It also exports a high-performance gRPC API, codenamed CS3APIS, to easily integrate with other systems. Reva is meant to be a high performant and customizable HTTP and GRPC server.

Installation

Head to Documentation for documentation or download to get the latest available release.

Documentation & Support

Read the getting started guide and the other feature guides.

Contributing: Build and run it yourself

You need to have Go (version 1.21 or higher), git and make installed. Some of these commands may require sudo, depending on your system setup.

# build
$ git clone https://github.com/cs3org/reva
$ cd reva
$ make # will compile and run unit tests
$ cmd/revad/revad --version

You can also read the build from sources guide and the setup tutorial.

Contributing: Run tests

To run unit tests do: make test-go

To run GRPC integration tests do: make test-integration You can get more verbose output with ginkgo -v -r tests/integration/.

To run EOS tests you need to have an up and running Docker system: make docker-eos-full-tests

Versioning

There are currently two major versions in active development.

1.x versions

The master branch is the stable development branch. Releases from master are tagged as 1.x.x versions following semver. Use this version for standalone deployment.

2.x versions

The edge branch is used as a dependency for ownCloud's OCIS product and differs from 1.X versions. Please do not use 2.X for standalone deployments and always use them as part of the OCIS product.

Docker images

See https://hub.docker.com/r/cs3org/reva.

Plugin development

You can extend Reva without having to create PR's to this repo. To do so, you can create plugins, pease checkout the Tutorials.

License

To promote free and unrestricted adoption of CS3 APIs and the reference implementation Reva by all EFSS implementations and all platforms and application providers, both community and commercial, Open Source and Open Core, CERN released the source code repositories under Apache 2.0 license.

Further evolution of the CS3 APIs will be driven by the needs of the Educational and Research community with the goal of maximizing the portability of the applications and service extensions.

Reva is distributed under Apache 2.0 license.

Reva logo's have been designed and contributed to the project by Eamon Maguire.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterPlugin

func RegisterPlugin(p Plugin)

RegisterPlugin registers a reva plugin. For registration this method should be called in the init() method.

Types

type Plugin

type Plugin interface {
	// RevaPlugin returns the plugin info, like the ID
	// in the form of <namespace>.<name>, and a New func
	// used to create the plugin.
	// The namespace can be only one defined by reva,
	// depending on the scope of the plugin, while the name
	// can be whatever, but unique in the namespace.
	RevaPlugin() PluginInfo
}

Plugin is a type used as reva plugin. The type may implement something useful, depending on what is possible to plug in.

type PluginID

type PluginID string

PluginID is the string that uniquely identify a reva plugin. It consists of a dot-separated labels. The last label is the name of the plugin, while the labels before represents the namespace. A pluginID is in the form <namespace>.<name> Neither the name nor the namespace can be empty. The name cannot contain dots. ModuleIDs shuld be lowercase and use underscores (_) instead of spaces.

func (PluginID) Name

func (i PluginID) Name() string

Name returns the name of the Plugin ID (i.e. the last name).

func (PluginID) Namespace

func (i PluginID) Namespace() string

Namespace returns the namespace of the plugin ID, which is all but the last label of the ID.

type PluginInfo

type PluginInfo struct {
	// ID is the full name of the plugin, in the form
	// <namespace>.<name>. It must be unique.
	ID PluginID
	// New is the constructor of the plugin. We rely
	// on the developer to correctly provide a valid
	// construct depending on the plugin.
	New any
}

PluginInfo holds the information of a reva plugin.

func GetPlugins

func GetPlugins(ns string) []PluginInfo

GetPlugins returns all the plugins in the given namespace, and their descendants. For example, a namespace "foo" returns modules with id "foo", "foo.bar", "foo.bar.foo", but not "bar".

func (PluginInfo) String

func (pi PluginInfo) String() string

String return a string representation of the PluginInfo.

Directories

Path Synopsis
cmd
examples
sdk
internal
http/interceptors/appctx
Package appctx creates a context with useful components attached to the context like loggers and token managers.
Package appctx creates a context with useful components attached to the context like loggers and token managers.
http/interceptors/metrics
Package appctx creates a context with useful components attached to the context like loggers and token managers.
Package appctx creates a context with useful components attached to the context like loggers and token managers.
http/interceptors/trace
Package appctx creates a context with useful components attached to the context like loggers and token managers.
Package appctx creates a context with useful components attached to the context like loggers and token managers.
http/services/owncloud/ocs/conversions
Package conversions sits between CS3 type definitions and OCS API Responses
Package conversions sits between CS3 type definitions and OCS API Responses
http/services/owncloud/ocs/handlers/cloud/capabilities
Package capabilities contains the capabilities handler.
Package capabilities contains the capabilities handler.
http/services/owncloud/ocs/handlers/cloud/users
Package users contains the users handler.
Package users contains the users handler.
pkg
app
auth/manager/nextcloud
Package nextcloud verifies a clientID and clientSecret against a Nextcloud backend.
Package nextcloud verifies a clientID and clientSecret against a Nextcloud backend.
auth/manager/oidc
Package oidc verifies an OIDC token against the configured OIDC provider and obtains the necessary claims to obtain user information.
Package oidc verifies an OIDC token against the configured OIDC provider and obtains the necessary claims to obtain user information.
errtypes
Package errtypes contains definitions for common errors.
Package errtypes contains definitions for common errors.
events/example/consumer
Package consumer contains an example implementation of an event consumer
Package consumer contains an example implementation of an event consumer
events/example/publisher
Package publisher contains an example implementation for a publisher
Package publisher contains an example implementation for a publisher
notification/utils
Package utils contains utilities related to the notifications service and helper.
Package utils contains utilities related to the notifications service and helper.
ocm/share/repository/nextcloud
Package nextcloud verifies a clientID and clientSecret against a Nextcloud backend.
Package nextcloud verifies a clientID and clientSecret against a Nextcloud backend.
rgrpc/status
Package status contains helpers functions to create grpc Status with contextual information, like traces.
Package status contains helpers functions to create grpc Status with contextual information, like traces.
rhttp/datatx
Package datatx provides a library to abstract the complexity of using various data transfer protocols.
Package datatx provides a library to abstract the complexity of using various data transfer protocols.
rhttp/datatx/utils/download
Package download provides a library to handle file download requests.
Package download provides a library to handle file download requests.
sdk
storage/registry/dynamic
Package dynamic contains the dynamic storage registry
Package dynamic contains the dynamic storage registry
storage/registry/dynamic/rewriter
Package rewriter contains the route rewriters
Package rewriter contains the route rewriters
storage/registry/dynamic/routingtree
Package routingtree contains the routing tree implementation.
Package routingtree contains the routing tree implementation.
storage/registry/utils
Package utils contains utilities for storage registries
Package utils contains utilities for storage registries
storage/utils/templates
Package templates contains data-driven templates for path layouts.
Package templates contains data-driven templates for path layouts.
tests
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL