common

package
v1.6.1 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2019 License: AGPL-3.0 Imports: 4 Imported by: 1,194

Documentation

Overview

Package common provides a library of tools used by all pydio services

Index

Constants

View Source
const (
	SERVICE_NATS = "nats"

	SERVICE_LOG     = "log"
	SERVICE_CONFIG  = "config"
	SERVICE_INSTALL = "install"
	SERVICE_UPDATE  = "update"

	SERVICE_TAG_IDM        = "idm"
	SERVICE_TAG_SCHEDULER  = "scheduler"
	SERVICE_TAG_DATA       = "data"
	SERVICE_TAG_DATASOURCE = "datasource"
	SERVICE_TAG_BROKER     = "broker"
	SERVICE_TAG_GATEWAY    = "gateway"
	SERVICE_TAG_DISCOVERY  = "discovery"
	SERVICE_TAG_FRONTEND   = "frontend"

	SERVICE_ACL       = "acl"
	SERVICE_SHARE     = "share"
	SERVICE_ROLE      = "role"
	SERVICE_USER      = "user"
	SERVICE_AUTH      = "auth"
	SERVICE_WORKSPACE = "workspace"
	SERVICE_POLICY    = "policy"
	SERVICE_GRAPH     = "graph"
	SERVICE_USER_META = "user-meta"

	SERVICE_USER_KEY  = "user-key"
	SERVICE_TREE      = "tree"
	SERVICE_META      = "meta"
	SERVICE_ENC_KEY   = "data-key"
	SERVICE_SEARCH    = "search"
	SERVICE_CHANGES   = "changes"
	SERVICE_SYNC      = "sync"
	SERVICE_TEMPLATES = "templates"

	SERVICE_ACTIVITY      = "activity"
	SERVICE_MAILER        = "mailer"
	SERVICE_WEBSOCKET     = "websocket"
	SERVICE_CHAT          = "chat"
	SERVICE_FRONTEND      = "frontend"
	SERVICE_FRONT_STATICS = "statics"

	SERVICE_TIMER    = "timer"
	SERVICE_JOBS     = "jobs"
	SERVICE_TASKS    = "tasks"
	SERVICE_VERSIONS = "versions"
	SERVICE_DOCSTORE = "docstore"

	SERVICE_DATA_         = "data."
	SERVICE_DATA_INDEX    = SERVICE_DATA_ + "index"
	SERVICE_DATA_OBJECTS  = SERVICE_DATA_ + "objects"
	SERVICE_DATA_SYNC     = SERVICE_DATA_ + "sync"
	SERVICE_DATA_INDEX_   = SERVICE_DATA_INDEX + "."
	SERVICE_DATA_OBJECTS_ = SERVICE_DATA_OBJECTS + "."
	SERVICE_DATA_SYNC_    = SERVICE_DATA_SYNC + "."

	SERVICE_GRPC_NAMESPACE_    = "pydio.grpc."
	SERVICE_WEB_NAMESPACE_     = "pydio.web."
	SERVICE_REST_NAMESPACE_    = "pydio.rest."
	SERVICE_GATEWAY_NAMESPACE_ = "pydio.gateway."
	SERVICE_TEST_NAMESPACE_    = "pydio.test."

	SERVICE_GATEWAY_PROXY = SERVICE_GATEWAY_NAMESPACE_ + "proxy"
	SERVICE_GATEWAY_DATA  = SERVICE_GATEWAY_NAMESPACE_ + "data"
	SERVICE_GATEWAY_DAV   = SERVICE_GATEWAY_NAMESPACE_ + "dav"
	SERVICE_GATEWAY_WOPI  = SERVICE_GATEWAY_NAMESPACE_ + "wopi"
	SERVICE_MICRO_API     = SERVICE_GATEWAY_NAMESPACE_ + "rest"
)

Defines all constants for services names.

View Source
const (
	TOPIC_PROXY_RESTART    = "topic.pydio.proxy.restart"
	TOPIC_SERVICE_START    = "topic.pydio.service.start"
	TOPIC_SERVICE_STOP     = "topic.pydio.service.stop"
	TOPIC_INDEX_CHANGES    = "topic.pydio.index.nodes.changes"
	TOPIC_TREE_CHANGES     = "topic.pydio.tree.nodes.changes"
	TOPIC_META_CHANGES     = "topic.pydio.meta.nodes.changes"
	TOPIC_TIMER_EVENT      = "topic.pydio.meta.timer.event"
	TOPIC_JOB_CONFIG_EVENT = "topic.pydio.jobconfig.event"
	TOPIC_JOB_TASK_EVENT   = "topic.pydio.jobconfig.event"
	TOPIC_IDM_EVENT        = "topic.pydio.idm.event"
	TOPIC_ACTIVITY_EVENT   = "topic.pydio.activity.event"
	TOPIC_CHAT_EVENT       = "topic.pydio.chat.event"
	TOPIC_DATASOURCE_EVENT = "topic.pydio.datasource.event"
	TOPIC_INDEX_EVENT      = "topic.pydio.index.event"
)

Define constants for Event Bus Topics

View Source
const (
	META_NAMESPACE_DATASOURCE_NAME        = "pydio:meta-data-source-name"
	META_NAMESPACE_DATASOURCE_PATH        = "pydio:meta-data-source-path"
	META_NAMESPACE_NODE_TEST_LOCAL_FOLDER = "pydio:test:local-folder-storage"
	META_NAMESPACE_RECYCLE_RESTORE        = "pydio:recycle_restore"
	META_NAMESPACE_NODENAME               = "name"
	RECYCLE_BIN_NAME                      = "recycle_bin"

	PYDIO_THUMBSTORE_NAMESPACE        = "pydio-thumbstore"
	PYDIO_DOCSTORE_BINARIES_NAMESPACE = "pydio-binaries"
	PYDIO_VERSIONS_NAMESPACE          = "versions-store"
)

Define constants for metadata and fixed datasources

View Source
const (
	PYDIO_CONTEXT_USER_KEY       = "X-Pydio-User"
	PYDIO_SYSTEM_USERNAME        = "pydio.system.user"
	PYDIO_S3ANON_USERNAME        = "pydio.anon.user"
	PYDIO_S3ANON_PROFILE         = "anon"
	PYDIO_SYNC_HIDDEN_FILE_META  = ".pydio"
	X_AMZ_META_CLEAR_SIZE        = "X-Amz-Meta-Pydio-Clear-Size"
	X_AMZ_META_CLEAR_SIZE_UNKOWN = "unknown"
	X_AMZ_META_NODE_UUID         = "X-Amz-Meta-Pydio-Node-Uuid"
	X_AMZ_META_DIRECTIVE         = "X-Amz-Metadata-Directive"

	PYDIO_PROFILE_ADMIN    = "admin"
	PYDIO_PROFILE_STANDARD = "standard"
	PYDIO_PROFILE_SHARED   = "shared"
	PYDIO_PROFILE_ANON     = "anon"

	KEYRING_MASTER_KEY       = "keyring.master"
	META_FLAG_READONLY       = "node_readonly"
	META_FLAG_LEVEL_READONLY = "level_readonly"
	META_FLAG_ENCRYPTED      = "datasource_encrypted"
	META_FLAG_VERSIONING     = "datasource_versioning"
	META_FLAG_WORKSPACE_ROOT = "ws_root"
	META_FLAG_VIRTUAL_ROOT   = "virtual_root"
	NODE_FLAG_ETAG_TEMPORARY = "temporary"
)

Additional constants for authentication/authorization aspects

View Source
const (
	DOCSTORE_ID_SELECTIONS          = "selections"
	DOCSTORE_ID_VIRTUALNODES        = "virtualnodes"
	DOCSTORE_ID_VERSIONING_POLICIES = "versioningPolicies"
	DOCSTORE_ID_SHARES              = "share"
	DOCSTORE_ID_RESET_PASS_KEYS     = "resetPasswordKeys"
)

DocStore constants for StoreID's

View Source
const (
	DB_NUM_RESERVED_CONNECTIONS = 10
	DB_MAX_OPEN_CONNS           = 20
	DB_MAX_IDLE_CONNS           = 20
	DB_CONN_MAX_LIFETIME        = 24 * time.Hour
)

Defaults for DB connexions.

View Source
const (
	KEY_MSG_ID = "MsgId"
	KEY_TS     = "Ts"
	KEY_LEVEL  = "Level"
	KEY_LOGGER = "Logger"
	KEY_MSG    = "Msg"
)

Define string used as keys.

View Source
const (
	// Login
	AUDIT_LOGIN_SUCCEED       = "1"
	AUDIT_LOGIN_FAILED        = "2"
	AUDIT_LOGIN_POLICY_DENIAL = "3"
	AUDIT_INVALID_JWT         = "4"
	AUDIT_LOCK_USER           = "5"

	// Tree events
	AUDIT_NODE_CREATE       = "11"
	AUDIT_NODE_READ         = "12"
	AUDIT_NODE_LIST         = "13"
	AUDIT_NODE_UPDATE       = "14"
	AUDIT_NODE_DELETE       = "15"
	AUDIT_WS_CREATE         = "16"
	AUDIT_WS_UPDATE         = "17"
	AUDIT_WS_DELETE         = "18"
	AUDIT_NODE_MOVED_TO_BIN = "19"

	// S3 Objects
	AUDIT_OBJECT_GET = "21"
	AUDIT_OBJECT_PUT = "22"

	// Users, Group, Roles
	AUDIT_USER_CREATE  = "41"
	AUDIT_USER_READ    = "42"
	AUDIT_USER_UPDATE  = "43"
	AUDIT_USER_DELETE  = "44"
	AUDIT_GROUP_CREATE = "46"
	AUDIT_GROUP_READ   = "47"
	AUDIT_GROUP_UPDATE = "48"
	AUDIT_GROUP_DELETE = "49"
	AUDIT_ROLE_CREATE  = "51"
	AUDIT_ROLE_READ    = "52"
	AUDIT_ROLE_UPDATE  = "53"
	AUDIT_ROLE_DELETE  = "54"

	// Policies
	AUDIT_POLICY_GROUP_STORE  = "61"
	AUDIT_POLICY_GROUP_DELETE = "62"
	AUDIT_POLICY_STORE        = "63"
	AUDIT_POLICY_DELETE       = "64"

	// ShareLinks And Cells
	AUDIT_CELL_CREATE = "71"
	AUDIT_CELL_READ   = "72"
	AUDIT_CELL_UPDATE = "73"
	AUDIT_CELL_DELETE = "74"
	AUDIT_LINK_CREATE = "75"
	AUDIT_LINK_READ   = "76"
	AUDIT_LINK_UPDATE = "77"
	AUDIT_LINK_DELETE = "78"
)

Known audit message IDs

View Source
const (
	KEY_CONTEXT = "Context"

	// Follow a given request between the various services
	KEY_SPAN_UUID        = "SpanUuid"
	KEY_SPAN_PARENT_UUID = "SpanParentUuid"
	KEY_SPAN_ROOT_UUID   = "SpanRootUuid"

	// Group messages for a given high level operation
	KEY_OPERATION_UUID  = "OperationUuid"
	KEY_OPERATION_LABEL = "OperationLabel"

	KEY_NODE      = "Node"
	KEY_NODE_UUID = "NodeUuid"
	KEY_NODE_PATH = "NodePath"

	KEY_WORKSPACE       = "Workspace"
	KEY_WORKSPACE_UUID  = "WorkspaceUuid"
	KEY_WORKSPACE_SCOPE = "WorkspaceScope"

	KEY_CHANGE_LOG        = "ChangeLog"
	KEY_NODE_CHANGE_EVENT = "NodeChangeEvent"
	KEY_VERSIONING_POLICY = "VersioningPolicy"

	KEY_ACTIVITY_SUBSCRIPTION   = "ActivitySubscription"
	KEY_ACTIVITY_STREAM_REQUEST = "StreamActivitiesRequest"
	KEY_ACTIVITY_POST_EVENT     = "PostActivityEvent"
	KEY_ACTIVITY_OBJECT         = "ActivityObject"

	KEY_ROLE      = "Role"
	KEY_ROLE_UUID = "RoleUuid"
	KEY_ROLES     = "Roles"
	KEY_PROFILE   = "Profile"

	KEY_USER      = "User"
	KEY_USERNAME  = "UserName"
	KEY_USER_UUID = "UserUuid"

	KEY_GROUP_PATH = "GroupPath"

	KEY_CONNECTOR = "Connector"

	// Should be ACL and ACLID if we use proto names, changed to stay homogeneous with the other fields
	KEY_ACL    = "Acl"
	KEY_ACL_ID = "AclId"

	// Pydio internal merged representation of all ACLs that a user has access to
	KEY_ACCESS_LIST = "AccessList"

	KEY_POLICY_GROUP      = "PolicyGroup"
	KEY_POLICY_GROUP_UUID = "PolicyGroupUuid"
	KEY_POLICY            = "Policy"
	KEY_POLICY_ID         = "PolicyId"
	KEY_POLICY_REQUEST    = "PolicyRequest"

	// Scheduler
	KEY_JOB       = "Job"
	KEY_JOB_ID    = "JobId"
	KEY_ACTION    = "Action"
	KEY_ACTION_ID = "ActionId"
	KEY_TASK      = "Task"
	KEY_TASK_ID   = "TaskId"

	// Cells
	KEY_CELL      = "Cell"
	KEY_CELL_UUID = "CellUuid"
	KEY_LINK      = "ShareLink"
	KEY_LINK_UUID = "ShareLinkUuid"

	// Chat
	KEY_CHAT_ROOM          = "ChatRoom"
	KEY_CHAT_LIST_ROOM_REQ = "ChatListRoomRequest"
	KEY_CHAT_LIST_MSG_REQ  = "ChatListMsgRequest"
	KEY_CHAT_POST_MSG_REQ  = "ChatPostMsgRequest"
)

Known audit message IDs

View Source
const (
	KEY_FRONT_IP      = "FrontIp"
	KEY_FRONT_USERID  = "UserId"
	KEY_FRONT_WKSID   = "WorkspaceId"
	KEY_FRONT_SOURCE  = "Source"
	KEY_FRONT_PREFIX  = "Prefix"
	KEY_FRONT_MESSAGE = "Message"
	KEY_FRONT_NODES   = "Nodes"
)

Keys for the front end

Variables

View Source
var (
	BuildStamp    string
	BuildRevision string
)

Main code information. Set by the go linker in the resulting binary when doing 'make main'

View Source
var (
	PackageType  string
	PackageLabel string
)

Package info. Initialised by main.

View Source
var (
	UpdateDefaultChannel   = "stable"
	UpdateDefaultServerUrl = "https://updatecells.pydio.com/"
	UpdateDefaultPublicKey = `` /* 424-byte string literal not displayed */
)

Update Server default values.

View Source
var (
	LogConfig        LogConfigType
	LogLevel         zapcore.Level
	LogCaptureStdOut bool
)

Logging Levels.

View Source
var (
	LogEventLabels = map[string]string{
		AUDIT_LOGIN_SUCCEED: "Login succeed",
		AUDIT_LOGIN_FAILED:  "Login failed",
		AUDIT_NODE_CREATE:   "Create Node",
		AUDIT_NODE_READ:     "Read Node",
		AUDIT_NODE_LIST:     "List Node",
		AUDIT_NODE_UPDATE:   "Upadate Node",
		AUDIT_NODE_DELETE:   "Delete Node",
		AUDIT_OBJECT_GET:    "Get Object",
		AUDIT_OBJECT_PUT:    "Put Object",
	}
)
View Source
var (
	// PydioUserProfiles order reflects the level of authorizations
	PydioUserProfiles = []string{
		PYDIO_PROFILE_ANON,
		PYDIO_PROFILE_SHARED,
		PYDIO_PROFILE_STANDARD,
		PYDIO_PROFILE_ADMIN,
	}
)

Functions

func Version

func Version() *hashiversion.Version

Version returns the current code version as an object.

Types

type ConfigValues added in v1.2.2

type ConfigValues interface {
	Get(key string) interface{}
	Set(key string, value interface{}) error
	Del(key string) error

	Bool(key string, def ...bool) bool
	Int(key string, def ...int) int
	Int64(key string, defaultValue ...int64) int64
	String(key string) string
	StringMap(key string) map[string]string
	StringArray(key string) []string
	Map(key string) map[string]interface{}

	Database(k string) (string, string)
}

type Converter

type Converter interface {
	Convert(*any.Any) (string, bool)
}

Converter interface

type LogConfigType

type LogConfigType string

Various custom types internally used by Pydio.

const (
	LogConfigConsole    LogConfigType = "console"
	LogConfigProduction LogConfigType = "production"
)

Define constants for Loggging configuration

type Manager

type Manager interface {
	Get(string) interface{}
	Set(string, interface{}) error
	Del(string) error
	Map(string) map[string]interface{}
}

Manager interface

type ServiceName

type ServiceName string

Various custom types internally used by Pydio.

type ServiceTag

type ServiceTag string

Various custom types internally used by Pydio.

type ServiceType

type ServiceType string

Various custom types internally used by Pydio.

type XMLSerializableForm added in v1.2.2

type XMLSerializableForm interface {
	Serialize(languages ...string) interface{}
}

Directories

Path Synopsis
Package auth provides tools related to authentication of pydio services
Package auth provides tools related to authentication of pydio services
claim
Package claim wraps the JWT claims with util functions
Package claim wraps the JWT claims with util functions
dex
Package dex provides specific connectors for the CoreOS/Dex implementation of OpenID Connect protocol
Package dex provides specific connectors for the CoreOS/Dex implementation of OpenID Connect protocol
Package BoltDB provides tools for using Bolt as a standard persistence layer for services
Package BoltDB provides tools for using Bolt as a standard persistence layer for services
Package config provides tools for managing configurations
Package config provides tools for managing configurations
envvar
Package envvar implements Pydio specific interface for dynamic configurations that are backed by OS environment variables.
Package envvar implements Pydio specific interface for dynamic configurations that are backed by OS environment variables.
remote
Package source implements a configuration client backed by a config server
Package source implements a configuration client backed by a config server
Package crypto provides tools for data encryption and certificates management
Package crypto provides tools for data encryption and certificates management
Package dao provides abstraction of persistence layer used by pydio services.
Package dao provides abstraction of persistence layer used by pydio services.
Package event wraps protobuf events to add context information
Package event wraps protobuf events to add context information
Package forms provides utility methods to generate XML that is interpreted by the Front End to build forms.
Package forms provides utility methods to generate XML that is interpreted by the Front End to build forms.
Package log define and configure the Pydio loggers based on zap.
Package log define and configure the Pydio loggers based on zap.
Package defaults initializes the defaults GRPC clients and servers used by services
Package defaults initializes the defaults GRPC clients and servers used by services
router
Package router provides api service routing
Package router provides api service routing
Package mocks should provide utils used by tests to mock various layers.
Package mocks should provide utils used by tests to mock various layers.
## Protobuf Definitions This folder contains all Protobufs used by services to communicate
## Protobuf Definitions This folder contains all Protobufs used by services to communicate
activity
Package activity is a generated protocol buffer package.
Package activity is a generated protocol buffer package.
auth
Package auth is a generated protocol buffer package.
Package auth is a generated protocol buffer package.
chat
Package chat is a generated protocol buffer package.
Package chat is a generated protocol buffer package.
ctl
Package ctl is a generated protocol buffer package.
Package ctl is a generated protocol buffer package.
docstore
Package docstore is a generated protocol buffer package.
Package docstore is a generated protocol buffer package.
encryption
Package encryption is a generated protocol buffer package.
Package encryption is a generated protocol buffer package.
idm
Package idm is a generated protocol buffer package.
Package idm is a generated protocol buffer package.
install
Package install is a generated protocol buffer package.
Package install is a generated protocol buffer package.
jobs
Package jobs is a generated protocol buffer package.
Package jobs is a generated protocol buffer package.
log
Package log is a generated protocol buffer package.
Package log is a generated protocol buffer package.
mailer
Package mailer is a generated protocol buffer package.
Package mailer is a generated protocol buffer package.
object
Package object is a generated protocol buffer package.
Package object is a generated protocol buffer package.
rest
Package rest is a generated protocol buffer package.
Package rest is a generated protocol buffer package.
rest/cmd
Package cmd provides a specific tool for transforming json swagger file into a go file
Package cmd provides a specific tool for transforming json swagger file into a go file
sync
Package sync is a generated protocol buffer package.
Package sync is a generated protocol buffer package.
test
Package test is a generated protocol buffer package.
Package test is a generated protocol buffer package.
tree
Package tree is a generated protocol buffer package.
Package tree is a generated protocol buffer package.
update
Package update is a generated protocol buffer package.
Package update is a generated protocol buffer package.
Package registry provides the main glue between services It wraps micro registry (running services declared to the discovery server) into a more generic registry where all actual plugins are self-declared.
Package registry provides the main glue between services It wraps micro registry (running services declared to the discovery server) into a more generic registry where all actual plugins are self-declared.
Package service acts as a factory for all Pydio services.
Package service acts as a factory for all Pydio services.
context
Package servicecontext performs context values read/write, generally through server or client wrappers
Package servicecontext performs context values read/write, generally through server or client wrappers
frontend
Package frontend provides tools to publish static data from within any micro service It implements a simple Union HttpFS to be exposed by a standard net.HttpFileServer interface.
Package frontend provides tools to publish static data from within any micro service It implements a simple Union HttpFS to be exposed by a standard net.HttpFileServer interface.
proto
Package service is a generated protocol buffer package.
Package service is a generated protocol buffer package.
resources
Package resources provides extendable service Handler for managing resource-policy based data.
Package resources provides extendable service Handler for managing resource-policy based data.
sql
Package sql provides tools and DAOs for speaking SQL as well as managing tables migrations
Package sql provides tools and DAOs for speaking SQL as well as managing tables migrations
index
Package index provides ready-to-use tables and DAOs for storing hierarchical data using the nested sets pattern * Copyright (c) 2018.
Package index provides ready-to-use tables and DAOs for storing hierarchical data using the nested sets pattern * Copyright (c) 2018.
resources
Package resources provides ready-to-use SQL schemes and DAOs for attaching resource policies to any data
Package resources provides ready-to-use SQL schemes and DAOs for attaching resource policies to any data
Package utils provides swiss-knife tools for all services
Package utils provides swiss-knife tools for all services
cache
* Copyright (c) 2019.
* Copyright (c) 2019.
context
Package context manipulates context metadata
Package context manipulates context metadata
docs
* Copyright (c) 2019.
* Copyright (c) 2019.
error
Package error creates and parses common errors
Package error creates and parses common errors
i18n
* Copyright (c) 2018.
* Copyright (c) 2018.
meta
Package meta provides tool for reading metadata from services declaring "MetaProvider" support
Package meta provides tool for reading metadata from services declaring "MetaProvider" support
mtree
* Copyright (c) 2019.
* Copyright (c) 2019.
net
* Copyright (c) 2019.
* Copyright (c) 2019.
permissions
Package permissions provides high-level tools for computing permissions from ACLs * Copyright (c) 2019.
Package permissions provides high-level tools for computing permissions from ACLs * Copyright (c) 2019.
std
Package std provides tools for standard types (strings, int, floats, etc).
Package std provides tools for standard types (strings, int, floats, etc).
Package views provides high-level clients for talking to the main data tree in certain context.
Package views provides high-level clients for talking to the main data tree in certain context.

Jump to

Keyboard shortcuts

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