mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-05 19:59:37 -06:00
Merge branch 'master' into config-doc-descriptions
This commit is contained in:
3
docs/services/_includes/.gitignore
vendored
Normal file
3
docs/services/_includes/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
*_configvars.md
|
||||
*-example.yaml
|
||||
adoc/*adoc
|
||||
3
docs/services/_includes/_index.md
Normal file
3
docs/services/_includes/_index.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
GeekdocHidden: true
|
||||
---
|
||||
0
docs/services/_includes/adoc/.gitkeep
Normal file
0
docs/services/_includes/adoc/.gitkeep
Normal file
16
docs/services/app-provider/_index.md
Normal file
16
docs/services/app-provider/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: App-Provider
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/app-provider
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/app-provider/configuration.md
Normal file
15
docs/services/app-provider/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/app-provider
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/app-provider-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/app-provider_configvars.md" >}}
|
||||
16
docs/services/app-registry/_index.md
Normal file
16
docs/services/app-registry/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: App-Registry
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/app-registry
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
459
docs/services/app-registry/apps.md
Normal file
459
docs/services/app-registry/apps.md
Normal file
@@ -0,0 +1,459 @@
|
||||
---
|
||||
title: "Apps"
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 10
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/app-registry
|
||||
geekdocFilePath: apps.md
|
||||
---
|
||||
|
||||
oCIS is all about files. But most of the time you want to do something with files that is beyond the basic upload, download and share behavior. Therefore, oCIS has a concept for apps, that can handle specific file types, so-called mime types.
|
||||
|
||||
## App provider capability
|
||||
|
||||
The capabilities endpoint (e.g. `https://localhost:9200/ocs/v1.php/cloud/capabilities?format=json`) gives you following capabilities which are relevant for the app provider:
|
||||
|
||||
```json
|
||||
{
|
||||
"ocs": {
|
||||
"data": {
|
||||
"capabilities": {
|
||||
"files": {
|
||||
"app_providers": [
|
||||
{
|
||||
"enabled": true,
|
||||
"version": "1.0.0",
|
||||
"apps_url": "/app/list",
|
||||
"open_url": "/app/open",
|
||||
"new_url": "/app/new"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
{{< hint info >}}
|
||||
Please note that there might be two or more app providers with different versions. This is not be expected to happen on a regular basis. It was designed for a possible migration period for clients when the app provider needs a breaking change.
|
||||
{{< /hint >}}
|
||||
|
||||
## App registry
|
||||
|
||||
The app registry is the single point where all apps register themselves and their respective supported mime types.
|
||||
|
||||
### Mime type configuration / creation allow list
|
||||
|
||||
The apps will register their supported mime types automatically, so that users can open supported files with them.
|
||||
|
||||
Administrators can set default applications on a per mime type basis and also allow the creation of new files for certain mime types. This per mime type configuration also features a description, file extension option and an icon.
|
||||
|
||||
In order to modify the mime type config you need to set `STORAGE_APP_REGISTRY_MIMETYPES_JSON=.../mimetypes.json` to a valid JSON file with content like this:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"mime_type": "application/vnd.oasis.opendocument.text",
|
||||
"extension": "odt",
|
||||
"name": "OpenDocument",
|
||||
"description": "OpenDocument text document",
|
||||
"icon": "https://some-website.test/opendocument-text-icon.png",
|
||||
"default_app": "Collabora",
|
||||
"allow_creation": true
|
||||
},
|
||||
{
|
||||
"mime_type": "application/vnd.oasis.opendocument.spreadsheet",
|
||||
"extension": "ods",
|
||||
"name": "OpenSpreadsheet",
|
||||
"description": "OpenDocument spreadsheet document",
|
||||
"icon": "",
|
||||
"default_app": "Collabora",
|
||||
"allow_creation": false
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Fields:
|
||||
|
||||
- `mime_type` is the mime type you want to configure
|
||||
- `extension` is the file extension to be used for new files
|
||||
- `name` is the name of the file / mime type
|
||||
- `description` is a human-readable description of the file / mime type
|
||||
- `icon` URL to an icon which should be used for that mime type
|
||||
- `default_app` name of the default app which opens this mime type when the user doesn't specify one
|
||||
- `allow_creation` is whether a user should be able to create new file from that mime type (`true` or `false`)
|
||||
|
||||
### Listing available apps / mime types
|
||||
|
||||
Clients, for example ownCloud Web, need to offer users the available apps to open files and mime types for new file creation. This information can be obtained from this endpoint.
|
||||
|
||||
**Endpoint**: specified in the capabilities in `apps_url`, currently `/app/list`
|
||||
|
||||
**Method**: HTTP GET
|
||||
|
||||
**Authentication**: None
|
||||
|
||||
**Request example**:
|
||||
|
||||
```bash
|
||||
curl 'https://ocis.test/app/list'
|
||||
```
|
||||
|
||||
**Response example**:
|
||||
|
||||
HTTP status code: 200
|
||||
|
||||
```json
|
||||
{
|
||||
"mime-types": [
|
||||
{
|
||||
"mime_type": "application/pdf",
|
||||
"ext": "pdf",
|
||||
"app_providers": [
|
||||
{
|
||||
"name": "OnlyOffice",
|
||||
"icon": "https://www.pikpng.com/pngl/m/343-3435764_onlyoffice-desktop-editors-onlyoffice-logo-clipart.png"
|
||||
}
|
||||
],
|
||||
"name": "PDF",
|
||||
"description": "PDF document"
|
||||
},
|
||||
{
|
||||
"mime_type": "application/vnd.oasis.opendocument.text",
|
||||
"ext": "odt",
|
||||
"app_providers": [
|
||||
{
|
||||
"name": "Collabora",
|
||||
"icon": "https://www.collaboraoffice.com/wp-content/uploads/2019/01/CP-icon.png"
|
||||
},
|
||||
{
|
||||
"name": "OnlyOffice",
|
||||
"icon": "https://www.pikpng.com/pngl/m/343-3435764_onlyoffice-desktop-editors-onlyoffice-logo-clipart.png"
|
||||
}
|
||||
],
|
||||
"name": "OpenDocument",
|
||||
"icon": "https://some-website.test/opendocument-text-icon.png",
|
||||
"description": "OpenDocument text document",
|
||||
"allow_creation": true,
|
||||
"default_application": "Collabora"
|
||||
},
|
||||
{
|
||||
"mime_type": "text/markdown",
|
||||
"ext": "md",
|
||||
"app_providers": [
|
||||
{
|
||||
"name": "CodiMD",
|
||||
"icon": "https://avatars.githubusercontent.com/u/67865462?v=4"
|
||||
}
|
||||
],
|
||||
"name": "Markdown file",
|
||||
"description": "Markdown file",
|
||||
"allow_creation": true,
|
||||
"default_application": "CodiMD"
|
||||
},
|
||||
{
|
||||
"mime_type": "application/vnd.ms-word.document.macroenabled.12",
|
||||
"app_providers": [
|
||||
{
|
||||
"name": "Collabora",
|
||||
"icon": "https://www.collaboraoffice.com/wp-content/uploads/2019/01/CP-icon.png"
|
||||
},
|
||||
{
|
||||
"name": "OnlyOffice",
|
||||
"icon": "https://www.pikpng.com/pngl/m/343-3435764_onlyoffice-desktop-editors-onlyoffice-logo-clipart.png"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"mime_type": "application/vnd.ms-powerpoint.template.macroenabled.12",
|
||||
"app_providers": [
|
||||
{
|
||||
"name": "Collabora",
|
||||
"icon": "https://www.collaboraoffice.com/wp-content/uploads/2019/01/CP-icon.png"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Open a file with the app provider
|
||||
|
||||
**Endpoint**: specified in the capabilities in `open_url`, currently `/app/open`
|
||||
|
||||
**Method**: HTTP POST
|
||||
|
||||
**Authentication** (one of them):
|
||||
|
||||
- `Authorization` header with OIDC Bearer token for authenticated users or basic auth credentials (if enabled in oCIS)
|
||||
- `Public-Token` header with public link token for public links
|
||||
- `X-Access-Token` header with a REVA token for authenticated users
|
||||
|
||||
**Query parameters**:
|
||||
|
||||
- `file_id` (mandatory): id of the file to be opened
|
||||
- `app_name` (optional)
|
||||
- default (not given): default app for mime type
|
||||
- possible values depend on the app providers for a mimetype from the `/app/open` endpoint
|
||||
- `view_mode` (optional)
|
||||
- default (not given): highest possible view mode, depending on the file permissions
|
||||
- possible values:
|
||||
- `write`: user can edit and download in the opening app
|
||||
- `read`: user can view and download from the opening app
|
||||
- `view`: user can view in the opening app (download is not possible)
|
||||
|
||||
**Request examples**:
|
||||
|
||||
```bash
|
||||
curl -X POST 'https://ocis.test/app/open?file_id=ZmlsZTppZAo='
|
||||
|
||||
curl -X POST 'https://ocis.test/app/open?file_id=ZmlsZTppZAo=&app_name=Collabora'
|
||||
|
||||
curl -X POST 'https://ocis.test/app/open?file_id=ZmlsZTppZAo=&view_mode=read'
|
||||
|
||||
curl -X POST 'https://ocis.test/app/open?file_id=ZmlsZTppZAo=&app_name=Collabora&view_mode=write'
|
||||
```
|
||||
|
||||
**Response examples**:
|
||||
|
||||
All apps are expected to be opened in an iframe and the response will give some parameters for that action.
|
||||
|
||||
There are apps, which need to be opened in the iframe with a form post. The form post must include all form parameters included in the response. For these apps the response will look like this:
|
||||
|
||||
HTTP status code: 200
|
||||
|
||||
```json
|
||||
{
|
||||
"app_url": "https://.....",
|
||||
"method": "POST",
|
||||
"form_parameters": {
|
||||
"access_token": "eyJ0...",
|
||||
"access_token_ttl": "1634300912000",
|
||||
"arbitrary_param": "lorem-ipsum"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
There are apps, which need to be opened in the iframe with a GET request. The GET request must have set all headers included in the response. For these apps the response will look like this:
|
||||
|
||||
HTTP status code: 200
|
||||
|
||||
```json
|
||||
{
|
||||
"app_url": "https://...",
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"access_token": "eyJ0e...",
|
||||
"access_token_ttl": "1634300912000",
|
||||
"arbitrary_header": "lorem-ipsum"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Example responses (error case)**:
|
||||
|
||||
- missing `file_id`
|
||||
|
||||
HTTP status code: 400
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_PARAMETER",
|
||||
"message": "missing file ID"
|
||||
}
|
||||
```
|
||||
|
||||
- wrong `view_mode`
|
||||
|
||||
HTTP status code: 400
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_PARAMETER",
|
||||
"message": "invalid view mode"
|
||||
}
|
||||
```
|
||||
|
||||
- unknown `app_name`
|
||||
|
||||
HTTP status code: 404
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "RESOURCE_NOT_FOUND",
|
||||
"message": "error: not found: app 'Collabora' not found"
|
||||
}
|
||||
```
|
||||
|
||||
- wrong / invalid file id
|
||||
|
||||
HTTP status code: 400
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_PARAMETER",
|
||||
"message": "invalid file ID"
|
||||
}
|
||||
```
|
||||
|
||||
- file id does not point to a file
|
||||
|
||||
HTTP status code: 400
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_PARAMETER",
|
||||
"message": "the given file id does not point to a file"
|
||||
}
|
||||
```
|
||||
|
||||
- file does not exist / unauthorized to open the file
|
||||
|
||||
HTTP status code: 404
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "RESOURCE_NOT_FOUND",
|
||||
"message": "file does not exist"
|
||||
}
|
||||
```
|
||||
|
||||
### Creating a file with the app provider
|
||||
|
||||
**Endpoint**: specified in the capabilities in `new_file_url`, currently `/app/new`
|
||||
|
||||
**Method**: HTTP POST
|
||||
|
||||
**Authentication** (one of them):
|
||||
|
||||
- `Authorization` header with OIDC Bearer token for authenticated users or basic auth credentials (if enabled in oCIS)
|
||||
- `Public-Token` header with public link token for public links
|
||||
- `X-Access-Token` header with a REVA token for authenticated users
|
||||
|
||||
**Query parameters**:
|
||||
|
||||
- `parent_container_id` (mandatory): ID of the folder in which the file will be created
|
||||
- `filename` (mandatory): name of the new file
|
||||
- `template` (optional): not yet implemented
|
||||
|
||||
**Request examples**:
|
||||
|
||||
```bash
|
||||
curl -X POST 'https://ocis.test/app/new?parent_container_id=c2lkOmNpZAo=&filename=test.odt'
|
||||
```
|
||||
|
||||
**Response example**:
|
||||
|
||||
You will receive a file id of the freshly created file, which you can use to open the file in an editor.
|
||||
|
||||
```json
|
||||
{
|
||||
"file_id": "ZmlsZTppZAo="
|
||||
}
|
||||
```
|
||||
|
||||
**Example responses (error case)**:
|
||||
|
||||
- missing `parent_container_id`
|
||||
|
||||
HTTP status code: 400
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_PARAMETER",
|
||||
"message": "missing parent container ID"
|
||||
}
|
||||
```
|
||||
|
||||
- missing `filename`
|
||||
|
||||
HTTP status code: 400
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_PARAMETER",
|
||||
"message": "missing filename"
|
||||
}
|
||||
```
|
||||
|
||||
- parent container not found
|
||||
|
||||
HTTP status code: 404
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "RESOURCE_NOT_FOUND",
|
||||
"message": "the parent container is not accessible or does not exist"
|
||||
}
|
||||
```
|
||||
|
||||
- `parent_container_id` does not point to a container
|
||||
|
||||
HTTP status code: 400
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_PARAMETER",
|
||||
"message": "the parent container id does not point to a container"
|
||||
}
|
||||
```
|
||||
|
||||
- `filename` is invalid (e.g. includes a path segment)
|
||||
|
||||
HTTP status code: 400
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_PARAMETER",
|
||||
"message": "the filename must not contain a path segment"
|
||||
}
|
||||
```
|
||||
|
||||
- file already exists
|
||||
|
||||
HTTP status code: 403
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "RESOURCE_ALREADY_EXISTS",
|
||||
"message": "the file already exists"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## App drivers
|
||||
|
||||
App drivers represent apps, if the app is not able to register itself. Currently there is only the CS3org WOPI server app driver.
|
||||
|
||||
### CS3org WOPI server app driver
|
||||
|
||||
The CS3org WOPI server app driver is included in oCIS by default. It needs at least one WOPI compliant app (e.g. Collabora, OnlyOffice or Microsoft Online Server) or a CS3org WOPI bridge supported app (CodiMD or Etherpad) and the CS3org WOPI server.
|
||||
|
||||
Here is a closer look at the configuration of the actual app provider in a docker-compose example (see also [full example](https://github.com/owncloud/ocis/blob/master/deployments/examples/ocis_wopi/docker-compose.yml)):
|
||||
|
||||
```yaml
|
||||
services:
|
||||
ocis:
|
||||
image: owncloud/ocis:latest
|
||||
...
|
||||
environment:
|
||||
...
|
||||
GATEWAY_GRPC_ADDR: 0.0.0.0:9142 # make the REVA gateway accessible to the app drivers
|
||||
|
||||
ocis-appdriver-collabora:
|
||||
image: owncloud/ocis:latest
|
||||
command: storage-app-provider server # start only the app driver
|
||||
environment:
|
||||
STORAGE_GATEWAY_ENDPOINT: ocis:9142 # oCIS gateway endpoint
|
||||
APP_PROVIDER_GRPC_ADDR: 0.0.0.0:9164
|
||||
APP_PROVIDER_EXTERNAL_ADDR: ocis-appdriver-collabora:9164 # how oCIS can reach this app driver
|
||||
OCIS_JWT_SECRET: ocis-jwt-secret
|
||||
APP_PROVIDER_DRIVER: wopi
|
||||
APP_PROVIDER_WOPI_DRIVER_APP_NAME: Collabora # will be used as name for this app
|
||||
APP_PROVIDER_WOPI_DRIVER_APP_ICON_URI: https://www.collaboraoffice.com/wp-content/uploads/2019/01/CP-icon.png # will be used as icon for this app
|
||||
APP_PROVIDER_WOPI_DRIVER_APP_URL: https://collabora.owncloud.test # endpoint of collabora
|
||||
APP_PROVIDER_WOPI_DRIVER_INSECURE: false
|
||||
APP_PROVIDER_WOPI_DRIVER_IOP_SECRET: wopi-iop-secret
|
||||
APP_PROVIDER_WOPI_DRIVER_WOPI_URL: https://wopiserver.owncloud.test # endpoint of the CS3org WOPI server
|
||||
```
|
||||
15
docs/services/app-registry/configuration.md
Normal file
15
docs/services/app-registry/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/app-registry
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/app-registry-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/app-registry_configvars.md" >}}
|
||||
16
docs/services/audit/_index.md
Normal file
16
docs/services/audit/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Audit
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/audit
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
16
docs/services/audit/configuration.md
Normal file
16
docs/services/audit/configuration.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/audit
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/audit-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/audit_configvars.md" >}}
|
||||
16
docs/services/auth-basic/_index.md
Normal file
16
docs/services/auth-basic/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Auth-Basic
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/auth-basic
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/auth-basic/configuration.md
Normal file
15
docs/services/auth-basic/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/auth-basic
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/auth-basic-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/auth-basic_configvars.md" >}}
|
||||
16
docs/services/auth-bearer/_index.md
Normal file
16
docs/services/auth-bearer/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Auth-Bearer
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/auth-bearer
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/auth-bearer/configuration.md
Normal file
15
docs/services/auth-bearer/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/auth-bearer
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/auth-bearer-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/auth-bearer_configvars.md" >}}
|
||||
16
docs/services/auth-machine/_index.md
Normal file
16
docs/services/auth-machine/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Auth-Machine
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/auth-machine
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/auth-machine/configuration.md
Normal file
15
docs/services/auth-machine/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/auth-machine
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/auth-machine-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/auth-machine_configvars.md" >}}
|
||||
16
docs/services/frontend/_index.md
Normal file
16
docs/services/frontend/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Frontend
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/frontend
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/frontend/configuration.md
Normal file
15
docs/services/frontend/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/frontend
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/frontend-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/frontend_configvars.md" >}}
|
||||
16
docs/services/gateway/_index.md
Normal file
16
docs/services/gateway/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Gateway
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/gateway
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/gateway/configuration.md
Normal file
15
docs/services/gateway/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/gateway
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/gateway-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/gateway_configvars.md" >}}
|
||||
0
docs/services/graph-explorer/.gitignore
vendored
Normal file
0
docs/services/graph-explorer/.gitignore
vendored
Normal file
18
docs/services/graph-explorer/_index.md
Normal file
18
docs/services/graph-explorer/_index.md
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: "Graph-Explorer"
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/graph-explorer
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
This service embeds [Graph-Explorer](https://github.com/owncloud/ocis/tree/master/graph-explorer) to provide a UI for ownCloud Infinite Scale.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/graph-explorer/configuration.md
Normal file
15
docs/services/graph-explorer/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/graph-explorer
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/graph-explorer-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/graph-explorer_configvars.md" >}}
|
||||
0
docs/services/graph/.gitignore
vendored
Normal file
0
docs/services/graph/.gitignore
vendored
Normal file
17
docs/services/graph/_index.md
Normal file
17
docs/services/graph/_index.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "Graph"
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/graph
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service provides a simple graph world API which can be used by clients or other extensions.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
14
docs/services/graph/configuration.md
Normal file
14
docs/services/graph/configuration.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/graph
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/graph-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/graph_configvars.md" >}}
|
||||
275
docs/services/graph/groups.md
Normal file
275
docs/services/graph/groups.md
Normal file
@@ -0,0 +1,275 @@
|
||||
---
|
||||
title: Groups
|
||||
weight: 40
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/graph
|
||||
geekdocFilePath: users.md
|
||||
---
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
## Groups API
|
||||
|
||||
The Groups API is implementing a subset of the functionality of the
|
||||
[MS Graph Group resource](https://docs.microsoft.com/en-us/graph/api/resources/group?view=graph-rest-1.0)
|
||||
The JSON representation of a Group as handled by the Groups API looks like this:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName": "group",
|
||||
"id": "f0d97060-da16-4b0d-9fa4-d1ec43afc5f1"
|
||||
}
|
||||
```
|
||||
|
||||
Our implementation currently supports two Attributes for a Group:
|
||||
|
||||
| Attribute | Description |
|
||||
|---------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||
| displayName | The groups name |
|
||||
| id | An unique, stable readonly identifier for the group that stays the same for the whole lifetime of the Group, usually a UUID |
|
||||
|
||||
|
||||
### Reading groups
|
||||
|
||||
#### `GET /groups`
|
||||
|
||||
Returns a list of all groups
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/groups' -u user:password
|
||||
|
||||
```
|
||||
|
||||
Response:
|
||||
|
||||
```
|
||||
{
|
||||
"value": [
|
||||
{
|
||||
"displayName": "group",
|
||||
"id": "38580a2e-7018-42ed-aff6-b2af0b4e9790"
|
||||
},
|
||||
{
|
||||
"displayName": "Example Users",
|
||||
"id": "7a20f238-8a22-4458-902d-47674c317e5f"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
#### `GET /groups?$expand=members`
|
||||
|
||||
Returns a list of all groups including its members
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/groups?$expand=members' -u user:password
|
||||
|
||||
```
|
||||
|
||||
Response:
|
||||
|
||||
```
|
||||
{
|
||||
"value": [
|
||||
{
|
||||
"displayName": "group",
|
||||
"id": "38580a2e-7018-42ed-aff6-b2af0b4e9790",
|
||||
"members": [
|
||||
{
|
||||
"displayName": "user1",
|
||||
"id": "2e7b7e23-6c42-4d34-81b0-2bed34e51983",
|
||||
"mail": "user1@example.org",
|
||||
"onPremisesSamAccountName": "user1"
|
||||
},
|
||||
{
|
||||
"displayName": "user2",
|
||||
"id": "b45c9e35-0d95-4165-96bc-68bff4a316ed",
|
||||
"mail": "user2@example.org",
|
||||
"onPremisesSamAccountName": "user2"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"displayName": "Example Users",
|
||||
"id": "7a20f238-8a22-4458-902d-47674c317e5f",
|
||||
"members": [
|
||||
{
|
||||
"displayName": "user3",
|
||||
"id": "026fbfef-79ef-4f5d-887b-9eaf42777239",
|
||||
"mail": "user3@example.org",
|
||||
"onPremisesSamAccountName": "user3"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### `GET /groups/{groupid}`
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/groups/7a20f238-8a22-4458-902d-47674c317e5f' -u user:password
|
||||
```
|
||||
|
||||
Response:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName": "Example Users",
|
||||
"id": "7a20f238-8a22-4458-902d-47674c317e5f"
|
||||
}
|
||||
```
|
||||
|
||||
#### `GET /groups/{groupid}?$expand=members`
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/groups/7a20f238-8a22-4458-902d-47674c317e5f?$expand=members' -u user:password
|
||||
```
|
||||
|
||||
Response:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName": "Example Users",
|
||||
"id": "7a20f238-8a22-4458-902d-47674c317e5f",
|
||||
"members": [
|
||||
{
|
||||
"displayName": "user3",
|
||||
"id": "026fbfef-79ef-4f5d-887b-9eaf42777239",
|
||||
"mail": "user3@example.org",
|
||||
"onPremisesSamAccountName": "user3"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
### Getting Group Members
|
||||
|
||||
#### `GET /groups/{groupid}/members`
|
||||
|
||||
Returns a list of User objects that are members of a group.
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/groups/7a20f238-8a22-4458-902d-47674c317e5f/members' -u user:password
|
||||
|
||||
```
|
||||
|
||||
Response:
|
||||
|
||||
```
|
||||
[
|
||||
{
|
||||
"displayName": "Test User",
|
||||
"id": "c54b0588-7157-4521-bb52-c1c8ca84ea71",
|
||||
"mail": "example@example.org",
|
||||
"onPremisesSamAccountName": "example"
|
||||
},
|
||||
{
|
||||
"displayName": "Albert Einstein",
|
||||
"id": "4c510ada-c86b-4815-8820-42cdf82c3d51",
|
||||
"mail": "einstein@example.org",
|
||||
"onPremisesSamAccountName": "einstein"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### Creating / Updating Groups
|
||||
|
||||
#### `POST /groups`
|
||||
|
||||
Use this to create a new group.
|
||||
h
|
||||
##### Request Body
|
||||
|
||||
Note the missing `"id"` Attribute. It will be generated by the server:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName": "Example Users"
|
||||
}
|
||||
```
|
||||
|
||||
##### Response
|
||||
|
||||
When successful, the response will return the new group including the newly allocated `"id"`:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName": "Example Users",
|
||||
"id": "7a20f238-8a22-4458-902d-47674c317e5f"
|
||||
}
|
||||
```
|
||||
|
||||
#### `DELETE /groups/{id}`
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k --request DELETE 'https://localhost:9200/graph/v1.0/groups/7a20f238-8a22-4458-902d-47674c317e5f' -u user:password
|
||||
```
|
||||
|
||||
When successful the API returns no response body and the HTTP status code 204 (No Content)
|
||||
|
||||
#### `PATCH /groups/{id}`
|
||||
|
||||
Updating attributes of a single group is supposed to be done with a patch request. This is however currently not fully
|
||||
implemented for our write-enabled backends. The PATCH request can however be used to add multiple members to a group at once.
|
||||
See below.
|
||||
|
||||
### Adding a single member to a group
|
||||
|
||||
#### `POST /groups/{id}/members/$ref`
|
||||
|
||||
The request body contains a single attribute "`@odata.id`" referencing the new member of the group by URI. Example:
|
||||
|
||||
```
|
||||
curl -k --header "Content-Type: application/json" \
|
||||
--request POST --data \
|
||||
'{ "@odata.id": "https://localhost:9200/graph/v1.0/users/4c510ada-c86b-4815-8820-42cdf82c3d51" }' \
|
||||
'https://localhost:9200/graph/v1.0/groups/7a20f238-8a22-4458-902d-47674c317e5f/members/$ref' -u user:password
|
||||
|
||||
```
|
||||
|
||||
When successful the API returns no response body and the HTTP status code 204 (No Content)
|
||||
|
||||
### Adding multiple members in a single request
|
||||
|
||||
#### `PATCH /groups/{id}`
|
||||
|
||||
The request body contains the attribute `members@odata.bind` holding a list of URI references for the new members.
|
||||
Example:
|
||||
|
||||
```
|
||||
{
|
||||
"members@odata.bind": [
|
||||
"https://localhost:9200/graph/v1.0/users/4c510ada-c86b-4815-8820-42cdf82c3d51",
|
||||
"https://localhost:9200/graph/v1.0/users/c54b0588-7157-4521-bb52-c1c8ca84ea71"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
When successful the API returns no response body and the HTTP status code 204 (No Content)
|
||||
|
||||
### Removing a member
|
||||
|
||||
#### `DELETE /groups/{groupid}/members/{id}/$ref`
|
||||
|
||||
Example
|
||||
|
||||
```
|
||||
curl -k --request DELETE \
|
||||
'https://localhost:9200/graph/v1.0/groups/7a20f238-8a22-4458-902d-47674c317e5f/members/4c510ada-c86b-4815-8820-42cdf82c3d51/$ref' \
|
||||
-u user:password
|
||||
```
|
||||
|
||||
When successful the API returns no response body and the HTTP status code 204 (No Content)
|
||||
258
docs/services/graph/spaces.md
Normal file
258
docs/services/graph/spaces.md
Normal file
@@ -0,0 +1,258 @@
|
||||
---
|
||||
title: Spaces
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/graph
|
||||
geekdocFilePath: spaces.md
|
||||
---
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
## Graph Service
|
||||
|
||||
The Graph service is a reference implementation of the MS Graph API. There are no libraries doing any work only a set of routes and handlers.
|
||||
|
||||
## Spaces API
|
||||
|
||||
The Spaces API makes use of the [MS Graph API Drive resource](https://docs.microsoft.com/en-us/graph/api/resources/drive?view=graph-rest-1.0) to represent the concept of a Storage Space. Natively the MS Graph Specification [does not provide a way for creating Drives](https://docs.microsoft.com/en-us/graph/api/resources/drive?view=graph-rest-1.0#methods), as a Drive is a read only resource.
|
||||
|
||||
We circumvented this limitation by adding a `POST /drive/{drive-name}` to the Graph router. A major drawback of this solution is that this endpoint does not have support from the official MS Graph SDK, however it is reachable by any HTTP clients.
|
||||
|
||||
### Methods
|
||||
|
||||
```
|
||||
POST /drive/{drive-name}
|
||||
```
|
||||
|
||||
Calls to the following endpoint will create a Space with all the default parameters since we do not parse the request body just yet.
|
||||
|
||||
## Examples
|
||||
|
||||
We can now create a `Marketing` space and retrieve its WebDAV endpoint. Let's see how to do this.
|
||||
|
||||
### Starting conditions
|
||||
|
||||
This is the status of a DecomposedFS `users` tree. As we can see it is empty because we have not yet logged in with any users. It is a fresh new installation.
|
||||
|
||||
```
|
||||
❯ tree -a /var/tmp/ocis/storage/users
|
||||
/var/tmp/ocis/storage/users
|
||||
├── blobs
|
||||
├── nodes
|
||||
│ └── root
|
||||
├── spaces
|
||||
│ ├── personal
|
||||
│ └── share
|
||||
├── trash
|
||||
└── uploads
|
||||
```
|
||||
|
||||
Let's start with creating a space:
|
||||
|
||||
`curl -k -X POST 'https://localhost:9200/graph/v1.0/drives/marketing' -u einstein:relativity -v`
|
||||
|
||||
```
|
||||
❯ tree -a /var/tmp/ocis/storage/users
|
||||
/var/tmp/ocis/storage/users
|
||||
├── blobs
|
||||
├── nodes
|
||||
│ ├── 02dc1ec5-28b5-41c5-a48a-fabd4fa0562e
|
||||
│ │ └── .space -> ../e85d185f-cdaa-4618-a312-e33ea435acfe
|
||||
│ ├── 52efe3c2-c95a-47a1-8f3d-924aa473c711
|
||||
│ ├── e85d185f-cdaa-4618-a312-e33ea435acfe
|
||||
│ └── root
|
||||
│ ├── 4c510ada-c86b-4815-8820-42cdf82c3d51 -> ../52efe3c2-c95a-47a1-8f3d-924aa473c711
|
||||
│ └── c42debb8-926e-4a46-83b0-39dba56e59a4 -> ../02dc1ec5-28b5-41c5-a48a-fabd4fa0562e
|
||||
├── spaces
|
||||
│ ├── personal
|
||||
│ │ └── 52efe3c2-c95a-47a1-8f3d-924aa473c711 -> ../../nodes/52efe3c2-c95a-47a1-8f3d-924aa473c711
|
||||
│ ├── project
|
||||
│ │ └── 02dc1ec5-28b5-41c5-a48a-fabd4fa0562e -> ../../nodes/02dc1ec5-28b5-41c5-a48a-fabd4fa0562e
|
||||
│ └── share
|
||||
├── trash
|
||||
└── uploads
|
||||
```
|
||||
|
||||
we can see that the `project` folder was added to the spaces as well as the `.space` folder to the space node `02dc1ec5-28b5-41c5-a48a-fabd4fa0562e`. For demonstration purposes, let's list the extended attributes of the new node:
|
||||
|
||||
```
|
||||
xattr -l /var/tmp/ocis/storage/users/nodes/root/c42debb8-926e-4a46-83b0-39dba56e59a4
|
||||
user.ocis.blobid:
|
||||
user.ocis.blobsize: 0
|
||||
user.ocis.name: c42debb8-926e-4a46-83b0-39dba56e59a4
|
||||
user.ocis.owner.id: 4c510ada-c86b-4815-8820-42cdf82c3d51
|
||||
user.ocis.owner.idp: https://localhost:9200
|
||||
user.ocis.owner.type: primary
|
||||
user.ocis.parentid: root
|
||||
user.ocis.quota: 65536
|
||||
user.ocis.space.name: marketing
|
||||
```
|
||||
|
||||
As seen here it contains the metadata from the default list of requirements for this ticket.
|
||||
|
||||
Let's list the drive we just created using the graph API:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/me/drives' -u einstein:relativity -v | jq .value
|
||||
|
||||
[
|
||||
{
|
||||
"driveType": "personal",
|
||||
"id": "1284d238-aa92-42ce-bdc4-0b0000009157!52efe3c2-c95a-47a1-8f3d-924aa473c711",
|
||||
"lastModifiedDateTime": "2021-09-07T14:42:39.025050471+02:00",
|
||||
"name": "root",
|
||||
"owner": {
|
||||
"user": {
|
||||
"id": "4c510ada-c86b-4815-8820-42cdf82c3d51"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"id": "1284d238-aa92-42ce-bdc4-0b0000009157!52efe3c2-c95a-47a1-8f3d-924aa473c711",
|
||||
"webDavUrl": "https://localhost:9200/dav/spaces/1284d238-aa92-42ce-bdc4-0b0000009157!52efe3c2-c95a-47a1-8f3d-924aa473c711"
|
||||
}
|
||||
},
|
||||
{
|
||||
"driveType": "project",
|
||||
"id": "1284d238-aa92-42ce-bdc4-0b0000009157!02dc1ec5-28b5-41c5-a48a-fabd4fa0562e",
|
||||
"lastModifiedDateTime": "2021-09-07T14:42:39.030705579+02:00",
|
||||
"name": "root",
|
||||
"owner": {
|
||||
"user": {
|
||||
"id": "4c510ada-c86b-4815-8820-42cdf82c3d51"
|
||||
}
|
||||
},
|
||||
"quota": {
|
||||
"total": 65536
|
||||
},
|
||||
"root": {
|
||||
"id": "1284d238-aa92-42ce-bdc4-0b0000009157!02dc1ec5-28b5-41c5-a48a-fabd4fa0562e",
|
||||
"webDavUrl": "https://localhost:9200/dav/spaces/1284d238-aa92-42ce-bdc4-0b0000009157!02dc1ec5-28b5-41c5-a48a-fabd4fa0562e"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
As we can see the response already contains a space-aware dav endpoint, which we can use to upload files to the space:
|
||||
|
||||
```
|
||||
curl -k https://localhost:9200/dav/spaces/1284d238-aa92-42ce-bdc4-0b0000009157\!02dc1ec5-28b5-41c5-a48a-fabd4fa0562e/test.txt -X PUT -d "beep-sboop" -v -u einstein:relativity
|
||||
* Trying ::1...
|
||||
* TCP_NODELAY set
|
||||
* Connected to localhost (::1) port 9200 (#0)
|
||||
* upload completely sent off: 10 out of 10 bytes
|
||||
< HTTP/1.1 201 Created
|
||||
< Access-Control-Allow-Origin: *
|
||||
< Content-Length: 0
|
||||
< Content-Security-Policy: default-src 'none';
|
||||
< Content-Type: text/plain
|
||||
< Date: Tue, 07 Sep 2021 12:45:54 GMT
|
||||
< Etag: "e2942565a4eb52e8754c2806f215fe93"
|
||||
< Last-Modified: Tue, 07 Sep 2021 12:45:54 +0000
|
||||
< Oc-Etag: "e2942565a4eb52e8754c2806f215fe93"
|
||||
< Oc-Fileid: MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OmU4ZDIwNDA5LTE1OWItNGI2Ny1iODZkLTlkM2U3ZjYyYmM0ZQ==
|
||||
< Vary: Origin
|
||||
< X-Content-Type-Options: nosniff
|
||||
< X-Download-Options: noopen
|
||||
< X-Frame-Options: SAMEORIGIN
|
||||
< X-Permitted-Cross-Domain-Policies: none
|
||||
< X-Robots-Tag: none
|
||||
< X-Xss-Protection: 1; mode=block
|
||||
<
|
||||
* Connection #0 to host localhost left intact
|
||||
* Closing connection 0
|
||||
```
|
||||
|
||||
This is the state after every transformation:
|
||||
|
||||
```
|
||||
tree -a /var/tmp/ocis/storage/users
|
||||
/var/tmp/ocis/storage/users
|
||||
├── blobs
|
||||
│ └── 83842d56-91de-41d5-8800-b2fb7b2d31cf
|
||||
├── nodes
|
||||
│ ├── 02dc1ec5-28b5-41c5-a48a-fabd4fa0562e
|
||||
│ │ ├── .space -> ../e85d185f-cdaa-4618-a312-e33ea435acfe
|
||||
│ │ └── test.txt -> ../e8d20409-159b-4b67-b86d-9d3e7f62bc4e
|
||||
│ ├── 52efe3c2-c95a-47a1-8f3d-924aa473c711
|
||||
│ ├── e85d185f-cdaa-4618-a312-e33ea435acfe
|
||||
│ ├── e8d20409-159b-4b67-b86d-9d3e7f62bc4e
|
||||
│ └── root
|
||||
│ ├── 4c510ada-c86b-4815-8820-42cdf82c3d51 -> ../52efe3c2-c95a-47a1-8f3d-924aa473c711
|
||||
│ └── c42debb8-926e-4a46-83b0-39dba56e59a4 -> ../02dc1ec5-28b5-41c5-a48a-fabd4fa0562e
|
||||
├── spaces
|
||||
│ ├── personal
|
||||
│ │ └── 52efe3c2-c95a-47a1-8f3d-924aa473c711 -> ../../nodes/52efe3c2-c95a-47a1-8f3d-924aa473c711
|
||||
│ ├── project
|
||||
│ │ └── 02dc1ec5-28b5-41c5-a48a-fabd4fa0562e -> ../../nodes/02dc1ec5-28b5-41c5-a48a-fabd4fa0562e
|
||||
│ └── share
|
||||
├── trash
|
||||
└── uploads
|
||||
```
|
||||
|
||||
Observe the `test.txt` in the `02dc1ec5-28b5-41c5-a48a-fabd4fa0562e` node.
|
||||
|
||||
To finalize, verify the new created file is webdav-listable:
|
||||
|
||||
```xml
|
||||
curl -k https://localhost:9200/dav/spaces/1284d238-aa92-42ce-bdc4-0b0000009157\!02dc1ec5-28b5-41c5-a48a-fabd4fa0562e -X PROPFIND -v -u einstein:relativity | xmllint --format -
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns">
|
||||
<d:response>
|
||||
<d:href>/dav/spaces/1284d238-aa92-42ce-bdc4-0b0000009157!02dc1ec5-28b5-41c5-a48a-fabd4fa0562e/</d:href>
|
||||
<d:propstat>
|
||||
<d:prop>
|
||||
<oc:id>MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OjAyZGMxZWM1LTI4YjUtNDFjNS1hNDhhLWZhYmQ0ZmEwNTYyZQ==</oc:id>
|
||||
<oc:fileid>MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OjAyZGMxZWM1LTI4YjUtNDFjNS1hNDhhLWZhYmQ0ZmEwNTYyZQ==</oc:fileid>
|
||||
<d:getetag>"35a2ce5f56592d79d1b7233eff033347"</d:getetag>
|
||||
<oc:permissions>RDNVCK</oc:permissions>
|
||||
<d:resourcetype>
|
||||
<d:collection/>
|
||||
</d:resourcetype>
|
||||
<oc:size>0</oc:size>
|
||||
<d:getlastmodified>Tue, 07 Sep 2021 12:45:54 GMT</d:getlastmodified>
|
||||
<oc:favorite>0</oc:favorite>
|
||||
</d:prop>
|
||||
<d:status>HTTP/1.1 200 OK</d:status>
|
||||
</d:propstat>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>/dav/spaces/1284d238-aa92-42ce-bdc4-0b0000009157!02dc1ec5-28b5-41c5-a48a-fabd4fa0562e/.space/</d:href>
|
||||
<d:propstat>
|
||||
<d:prop>
|
||||
<oc:id>MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OmU4NWQxODVmLWNkYWEtNDYxOC1hMzEyLWUzM2VhNDM1YWNmZQ==</oc:id>
|
||||
<oc:fileid>MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OmU4NWQxODVmLWNkYWEtNDYxOC1hMzEyLWUzM2VhNDM1YWNmZQ==</oc:fileid>
|
||||
<d:getetag>"2e9a84bffce8b648ba626185800ee8fa"</d:getetag>
|
||||
<oc:permissions>SRDNVCK</oc:permissions>
|
||||
<d:resourcetype>
|
||||
<d:collection/>
|
||||
</d:resourcetype>
|
||||
<oc:size>0</oc:size>
|
||||
<d:getlastmodified>Tue, 07 Sep 2021 12:42:39 GMT</d:getlastmodified>
|
||||
<oc:favorite>0</oc:favorite>
|
||||
</d:prop>
|
||||
<d:status>HTTP/1.1 200 OK</d:status>
|
||||
</d:propstat>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>/dav/spaces/1284d238-aa92-42ce-bdc4-0b0000009157!02dc1ec5-28b5-41c5-a48a-fabd4fa0562e/test.txt</d:href>
|
||||
<d:propstat>
|
||||
<d:prop>
|
||||
<oc:id>MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OmU4ZDIwNDA5LTE1OWItNGI2Ny1iODZkLTlkM2U3ZjYyYmM0ZQ==</oc:id>
|
||||
<oc:fileid>MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OmU4ZDIwNDA5LTE1OWItNGI2Ny1iODZkLTlkM2U3ZjYyYmM0ZQ==</oc:fileid>
|
||||
<d:getetag>"e2942565a4eb52e8754c2806f215fe93"</d:getetag>
|
||||
<oc:permissions>RDNVW</oc:permissions>
|
||||
<d:resourcetype/>
|
||||
<d:getcontentlength>10</d:getcontentlength>
|
||||
<d:getcontenttype>text/plain</d:getcontenttype>
|
||||
<d:getlastmodified>Tue, 07 Sep 2021 12:45:54 GMT</d:getlastmodified>
|
||||
<oc:checksums>
|
||||
<oc:checksum>SHA1:8f4b4c83c565fc5ec54b78c30c94a6b65e411de5 MD5:6a3a4eca9a6726eef8f7be5b03ea9011 ADLER32:151303ed</oc:checksum>
|
||||
</oc:checksums>
|
||||
<oc:favorite>0</oc:favorite>
|
||||
</d:prop>
|
||||
<d:status>HTTP/1.1 200 OK</d:status>
|
||||
</d:propstat>
|
||||
</d:response>
|
||||
</d:multistatus>
|
||||
```
|
||||
270
docs/services/graph/users.md
Normal file
270
docs/services/graph/users.md
Normal file
@@ -0,0 +1,270 @@
|
||||
---
|
||||
title: Users
|
||||
weight: 30
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/graph
|
||||
geekdocFilePath: users.md
|
||||
---
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
## Users API
|
||||
|
||||
The Users API is implementing a subset of the functionality of the
|
||||
[MS Graph User resource](https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0)
|
||||
The JSON representation of a User handled by the Users API looks like this:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName": "Albert Einstein",
|
||||
"id": "4c510ada-c86b-4815-8820-42cdf82c3d51",
|
||||
"mail": "einstein@example.org",
|
||||
"onPremisesSamAccountName": "einstein"
|
||||
}
|
||||
```
|
||||
|
||||
Our implementation currently supports only a limited set of Attributes of Users:
|
||||
|
||||
| Attribute | Description |
|
||||
|---------------|---------------------------------------------------------------------------------------------------------------------------|
|
||||
| displayName | The full name of the user, usually a combination of given name and last name |
|
||||
| mail | The user's email address |
|
||||
| onPremisesSamAccountName | The loginname/account name of the user |
|
||||
| id | An unique, stable readonly identifier for the user that stays the same for the whole lifetime of the User, usually a UUID |
|
||||
| passwordProfile | Contains the password of the users. This is only present when updating or creating users. It is never returned by the API |
|
||||
|
||||
|
||||
### Reading users
|
||||
|
||||
#### `GET /me`
|
||||
|
||||
Returns the user object of the currently signed-in user
|
||||
|
||||
Example:
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/me' -u user:password
|
||||
```
|
||||
|
||||
Response:
|
||||
```
|
||||
{
|
||||
"displayName": "Albert Einstein",
|
||||
"id": "4c510ada-c86b-4815-8820-42cdf82c3d51",
|
||||
"mail": "einstein@example.org",
|
||||
"onPremisesSamAccountName": "einstein"
|
||||
}
|
||||
```
|
||||
|
||||
#### `GET /users`
|
||||
|
||||
Returns a list of all users
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/users' -u user:password
|
||||
|
||||
```
|
||||
|
||||
Response:
|
||||
|
||||
```
|
||||
{
|
||||
"value": [
|
||||
{
|
||||
"displayName": "Albert Einstein",
|
||||
"id": "4c510ada-c86b-4815-8820-42cdf82c3d51",
|
||||
"mail": "einstein@example.org",
|
||||
"onPremisesSamAccountName": "einstein"
|
||||
},
|
||||
{
|
||||
"displayName": "Maurice Moss",
|
||||
"id": "058bff95-6708-4fe5-91e4-9ea3d377588b",
|
||||
"mail": "moss@example.org",
|
||||
"onPremisesSamAccountName": "moss"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### `GET /users?$expand=memberOf`
|
||||
|
||||
Returns a list of all users
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/users?$expand=memberOf' -u user:password
|
||||
|
||||
```
|
||||
|
||||
Response:
|
||||
|
||||
```
|
||||
{
|
||||
"value": [
|
||||
{
|
||||
"displayName": "Albert Einstein",
|
||||
"id": "4c510ada-c86b-4815-8820-42cdf82c3d51",
|
||||
"mail": "einstein@example.org",
|
||||
"onPremisesSamAccountName": "einstein",
|
||||
"memberOf": [
|
||||
{
|
||||
"displayName": "users",
|
||||
"id": "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa"
|
||||
},
|
||||
{
|
||||
"displayName": "sailing-lovers",
|
||||
"id": "6040aa17-9c64-4fef-9bd0-77234d71bad0"
|
||||
},
|
||||
{
|
||||
"displayName": "violin-haters",
|
||||
"id": "dd58e5ec-842e-498b-8800-61f2ec6f911f"
|
||||
},
|
||||
{
|
||||
"displayName": "physics-lovers",
|
||||
"id": "262982c1-2362-4afa-bfdf-8cbfef64a06e"
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
"displayName": "Maurice Moss",
|
||||
"id": "058bff95-6708-4fe5-91e4-9ea3d377588b",
|
||||
"mail": "moss@example.org",
|
||||
"onPremisesSamAccountName": "moss",
|
||||
"memberOf": [
|
||||
{
|
||||
"displayName": "users",
|
||||
"id": "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa"
|
||||
}
|
||||
],
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### `GET /users/{userid or accountname}`
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/users/058bff95-6708-4fe5-91e4-9ea3d377588b' -u user:password
|
||||
```
|
||||
|
||||
Response:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName": "Maurice Moss",
|
||||
"id": "058bff95-6708-4fe5-91e4-9ea3d377588b",
|
||||
"mail": "moss@example.org",
|
||||
"onPremisesSamAccountName": "moss"
|
||||
}
|
||||
```
|
||||
|
||||
#### `GET /users/{userid or accountname}?$expand=memberOf`
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k 'https://localhost:9200/graph/v1.0/users/058bff95-6708-4fe5-91e4-9ea3d377588b?$expand=memberOf' -u user:password
|
||||
```
|
||||
|
||||
Response:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName": "Maurice Moss",
|
||||
"id": "058bff95-6708-4fe5-91e4-9ea3d377588b",
|
||||
"mail": "moss@example.org",
|
||||
"onPremisesSamAccountName": "moss",
|
||||
"memberOf": [
|
||||
{
|
||||
"displayName": "users",
|
||||
"id": "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa"
|
||||
}
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
### Creating / Updating Users
|
||||
|
||||
#### `POST /users`
|
||||
|
||||
Use this to create a new user.
|
||||
|
||||
##### Request Body
|
||||
|
||||
Note the missing `"id"` Attribute. It will be generated by the server:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName": "Example User",
|
||||
"mail": "example@example.org",
|
||||
"onPremisesSamAccountName": "example",
|
||||
"passwordProfile": {
|
||||
"password": "ThePassword"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
##### Response
|
||||
|
||||
When successful, the response will return the new user, without the password, but including the newly allocated `"id"`:
|
||||
|
||||
```
|
||||
{
|
||||
"displayName":"Example User",
|
||||
"id":"c067b139-c91c-4e47-8be6-669156a0587b",
|
||||
"mail":"example@example.org",
|
||||
"onPremisesSamAccountName":"example"
|
||||
}
|
||||
```
|
||||
|
||||
#### `DELETE /users/{id}`
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
curl -k --request DELETE 'https://localhost:9200/graph/v1.0/users/c067b139-c91c-4e47-8be6-669156a0587b' -u user:password
|
||||
```
|
||||
|
||||
When successful the API returns no response body and the HTTP status code 204 (No Content)
|
||||
|
||||
|
||||
#### `PATCH /users/{id}`
|
||||
|
||||
Updating attributes of a single user can be done with a patch request. The Request Body contains the new values of the attributes
|
||||
to be updated. E.g. to update the `displayName` Attribute:
|
||||
|
||||
```
|
||||
curl -k --header "Content-Type: application/json" \
|
||||
--request PATCH --data '{"displayName": "Test User" }' \
|
||||
'https://localhost:9200/graph/v1.0/users/c54b0588-7157-4521-bb52-c1c8ca84ea71' -u user:password
|
||||
```
|
||||
|
||||
Similar to creating a user via `POST`, the `PATCH` request will return the user object containing the new attribute values.
|
||||
|
||||
### Change password
|
||||
|
||||
#### `POST /me/changePassword`
|
||||
|
||||
Users can change their own password by sending a POST request to `/me/changePassword`
|
||||
|
||||
##### Request Body
|
||||
|
||||
```
|
||||
{
|
||||
"currentPassword": "current",
|
||||
"newPassword": "new"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
When successful the API returns no response body and the HTTP status code 204 (No Content)
|
||||
|
||||
```
|
||||
curl -i -k --header "Content-Type: application/json" \
|
||||
--request POST --data '{"currentPassword": "current", "newPassword": "new" }' \
|
||||
'https://localhost:9200/graph/v1.0/me/changePassword' -u user:current
|
||||
```
|
||||
16
docs/services/groups/_index.md
Normal file
16
docs/services/groups/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Groups
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/groups
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/groups/configuration.md
Normal file
15
docs/services/groups/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/groups
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/groups-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/groups_configvars.md" >}}
|
||||
30
docs/services/idm/_index.md
Normal file
30
docs/services/idm/_index.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: IDM
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/idm
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
The IDM service provides a minimal LDAP Service (based on https://github.com/libregraph/idm) for oCIS. It is started as part of
|
||||
the default configuration and serves as a central place for storing user and group information.
|
||||
|
||||
It is mainly targeted at small oCIS installations. For larger setups it is recommended to replace IDM with a "real" LDAP server
|
||||
or to switch to an external Identity Management Solution.
|
||||
|
||||
IDM listens on port 9325 by default. In the default configuration it only accepts TLS protected connections (LDAPS). The BaseDN
|
||||
of the LDAP tree is `o=libregraph-idm`. IDM gives LDAP write permissions to a single user
|
||||
(DN: `uid=libregraph,ou=sysusers,o=libregraph-idm`). Any other authenticated user has read-only access. IDM stores its data in a
|
||||
[boltdb](https://github.com/etcd-io/bbolt) file `idm/ocis.boltdb` inside the oCIS base data directory.
|
||||
|
||||
Note: IDM is limited in its functionality. It only supports a subset of the LDAP operations (namely BIND, SEARCH, ADD, MODIFY, DELETE).
|
||||
Also IDM currently does not do any schema verification (e.g. structural vs. auxiliary object classes, require and option attributes,
|
||||
syntax checks, ...). So it's not meant as a general purpose LDAP server.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/idm/configuration.md
Normal file
15
docs/services/idm/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/idm
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/idm-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/idm_configvars.md" >}}
|
||||
49
docs/services/idm/configuration_hints.md
Normal file
49
docs/services/idm/configuration_hints.md
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: Configuration Hints
|
||||
date: 2022-04-27:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/idm
|
||||
geekdocFilePath: configuration_hints.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## TLS Server Certificates
|
||||
By default IDM generates a self-signed certificate and key on first startup to be
|
||||
able to provide TLS protected services. The certificate is stored in
|
||||
`idm/ldap.crt` inside the oCIS base data directory. The key is in
|
||||
`idm/ldap.key` in the same directory. You can use a custom server
|
||||
certificate by setting the `IDM_LDAPS_CERT` and `IDM_LDAPS_KEY`.
|
||||
|
||||
## Default / Demo Users
|
||||
On startup IDM creates a set of default services users that are needed
|
||||
internally to provide access to IDM to other oCIS services. These users are stored
|
||||
in a separate subtree. The base DN of that subtree is:
|
||||
`ou=sysusers,o=libregraph-idm`. The service users are:
|
||||
|
||||
* `uid=libregraph,ou=sysusers,o=libregraph-idm`: This is the only user with write
|
||||
access to the LDAP tree. It is used by the Graph service to look up, create, delete and
|
||||
modify users and groups.
|
||||
* `uid=idp,ou=sysusers,o=libregraph-idm`: This user is used by the IDP service to
|
||||
perform user lookups for authentication.
|
||||
* `uid=reva,ou=sysusers,o=libregraph-idm`: This user is used by the "reva" services
|
||||
`user`, `group` and `auth-basic`.
|
||||
|
||||
IDM is also able to create [Demo Users](../../../ocis/getting-started/demo-users)
|
||||
upon startup.
|
||||
|
||||
## Access via LDAP command line tools
|
||||
For testing purposes it is sometimes helpful to query IDM using the ldap
|
||||
command line clients. To e.g. list all users, this command can be used:
|
||||
|
||||
```
|
||||
ldapsearch -x -H ldaps://127.0.0.1:9235 -x -D uid=libregraph,ou=sysusers,o=libregraph-idm -w idm -b o=libregraph-idm objectclass=inetorgperson
|
||||
```
|
||||
|
||||
When using the default configuration with the self-signed server certificate,
|
||||
you might need to switch off the certificate validation using the `LDAPTL_REQCERT` env
|
||||
variable:
|
||||
|
||||
```
|
||||
LDAPTLS_REQCERT=never ldapsearch -x -H ldaps://127.0.0.1:9235 -x -D uid=libregraph,ou=sysusers,o=libregraph-idm -w idm -b o=libregraph-idm objectclass=inetorgperson
|
||||
```
|
||||
1
docs/services/idp/.gitignore
vendored
Normal file
1
docs/services/idp/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
grpc.md
|
||||
16
docs/services/idp/_index.md
Normal file
16
docs/services/idp/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: IDP
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/idp
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service provides an OpenID Connect provider which is the default way to authenticate in oCIS.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/idp/configuration.md
Normal file
15
docs/services/idp/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/idp
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/idp-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/idp_configvars.md" >}}
|
||||
50
docs/services/idp/theming.md
Normal file
50
docs/services/idp/theming.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: Theming
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/theming
|
||||
geekdocFilePath: theming.md
|
||||
---
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
## Intro
|
||||
Our default IDP UI is built with the [LibreGraph Connect](https://github.com/libregraph/lico) React app. Even though this app comes already with a simple theming options, we have compiled our own edited version of the app with more advanced changes than the default theming offers. Because of that, it is not possible at the moment to do any kind of easy theming and including custom theme means again compiling custom assets.
|
||||
|
||||
## Customizing assets
|
||||
Depending on what changes you wish to do with the theme, there are several files you can edit. All of them are located in the `idp/ui` folder.
|
||||
|
||||
### Static assets
|
||||
If you wish to add static assets like images, CSS, etc., you can add them to `idp/ui/public/static`. The `public` folder also contains the `index.html` file which can be adjusted to your needs.
|
||||
|
||||
### CSS
|
||||
LibreGraph Connect is built with [kpop](https://github.com/Kopano-dev/kpop), a collection of React UI components. To include any custom styles on top of that collection, you can define them in the `idp/ui/src/app.css` file. These rules will take precedence over the kpop.
|
||||
|
||||
### Containers
|
||||
Layouts of all pages are located in the `idp/ui/src/containers` folder. By editing any of files in that folder, you can do any kind of changes in the layout and create advanced themes. It is, however, important to be careful when touching this code as it imports also actions which are responsible for the login flow.
|
||||
|
||||
#### What pages to theme
|
||||
- Login
|
||||
- Login - login form used to authenticate the users
|
||||
- Consent - consent page used to authorise apps for already signed-in users
|
||||
- Chooseaccount - page with a list of accounts to choose from
|
||||
- Goodbye
|
||||
- Goodbyescreen - goodbye message displayed to users after they signed out
|
||||
- Welcome
|
||||
- Welcomescreen - welcome message displayed to users after they signed in
|
||||
|
||||
### Components
|
||||
`idp/ui/src/components` folder contains all custom components which are then imported into containers.
|
||||
|
||||
### Images
|
||||
Every image placed in `idp/ui/src/images` can be directly import into components or containers and will be optimized when compiling assets.
|
||||
|
||||
### Locales
|
||||
If you need to edit or add new locales, you can do so with json files in the `idp/ui/src/locales` folder. If adding new locale, make sure to add it also in the `index.js` file in the same folder.
|
||||
|
||||
## Building assets
|
||||
In order to build all assets, run `yarn build` in the `idp` folder. This script will compile all assets and output them into `idp/assets` folder.
|
||||
|
||||
At this point, you have two possible ways how to deploy your new theme:
|
||||
- run `make generate` in the root folder of your oCIS clone and generate the new assets
|
||||
- start the IDP service directly with custom assets by specifying the env var `IDP_ASSET_PATH`
|
||||
16
docs/services/nats/_index.md
Normal file
16
docs/services/nats/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: NATS
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/nats
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/nats/configuration.md
Normal file
15
docs/services/nats/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/nats
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/nats-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/nats_configvars.md" >}}
|
||||
17
docs/services/notifications/_index.md
Normal file
17
docs/services/notifications/_index.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Notifications
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/notifications
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
The notifications extension is responsible for making users aware of changes. It listens on the event bus, filters relevant events, looks up the recipients email address and then queues an email with an external MTA.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/notifications/configuration.md
Normal file
15
docs/services/notifications/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/notifications
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/notifications-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/notifications_configvars.md" >}}
|
||||
17
docs/services/ocdav/_index.md
Normal file
17
docs/services/ocdav/_index.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: ocDAV
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/ocdav
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
This service provides the WebDAV API which is required by ownCloud clients. Previews (thumbnails) are provided by the [WebDAV service]({{ ../../webdav }}).
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/ocdav/configuration.md
Normal file
15
docs/services/ocdav/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/ocdav
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/ocdav-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/ocdav_configvars.md" >}}
|
||||
1
docs/services/ocs/.gitignore
vendored
Normal file
1
docs/services/ocs/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
grpc.md
|
||||
17
docs/services/ocs/_index.md
Normal file
17
docs/services/ocs/_index.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "Ocs"
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/ocs
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service provides the OCS API which is required by some ownCloud clients.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/ocs/configuration.md
Normal file
15
docs/services/ocs/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/ocs
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/ocs-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/ocs_configvars.md" >}}
|
||||
213
docs/services/port-ranges.md
Normal file
213
docs/services/port-ranges.md
Normal file
@@ -0,0 +1,213 @@
|
||||
---
|
||||
title: Port Ranges
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 0
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/extensions
|
||||
geekdocFilePath: port-ranges.go
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
oCIS extensions often need a port to expose their services to other services or the outside world.
|
||||
As users may have many different extensions running on the same machine, we should track port usage in the oCIS ecosystem. In the best case we ensure that each extension uses a non colliding port range, to make life of users easier.
|
||||
|
||||
This page tracks the knowingly used port ranges.
|
||||
|
||||
Feel free to "reserve" a free port range when you're developing an extension by adding your extension to the list (see the edit button in the top right corner).
|
||||
|
||||
If you're developing a non-public extension, we recommend using ports outside of the ranges listed below.
|
||||
|
||||
We also suggest to use the last port in your extensions' range as a debug/metrics port.
|
||||
|
||||
## Allocations
|
||||
|
||||
| Port range | Service |
|
||||
| ---------- | ----------------------------------------------------------------------------- |
|
||||
| 9000-9010 | [reserved for Infinite Scale]({{< ref "../../../ocis/_index.md" >}}) |
|
||||
| 9100-9104 | [web]({{< ref "./web/_index.md" >}}) |
|
||||
| 9105-9109 | [hello](https://github.com/owncloud/ocis-hello) |
|
||||
| 9110-9114 | [ocs]({{< ref "./ocs/_index.md" >}}) |
|
||||
| 9115-9119 | [webdav]({{< ref "./webdav/_index.md" >}}) |
|
||||
| 9120-9124 | [graph]({{< ref "./graph/_index.md" >}}) |
|
||||
| 9125-9129 | FREE (formerly used by glauth) |
|
||||
| 9130-9134 | [idp]({{< ref "./idp/_index.md" >}}) |
|
||||
| 9135-9139 | [graph-explorer]({{< ref "./graph-explorer/_index.md" >}}) |
|
||||
| 9140-9141 | [frontend]({{< ref "./frontend/_index.md" >}}) |
|
||||
| 9142-9143 | [gateway]({{< ref "./gateway/_index.md" >}}) |
|
||||
| 9144-9145 | [users]({{< ref "./users/_index.md" >}}) |
|
||||
| 9146-9147 | [auth-basic]({{< ref "./auth-basic/_index.md" >}}) |
|
||||
| 9148-9149 | [auth-bearer]({{< ref "./auth-bearer/_index.md" >}}) |
|
||||
| 9150-9153 | [sharing]({{< ref "./sharing/_index.md" >}}) |
|
||||
| 9154-9156 | [storage-shares]({{< ref "./storage-shares/_index.md" >}}) |
|
||||
| 9157-9159 | [storage-users]({{< ref "./storage-users/_index.md" >}}) |
|
||||
| 9160-9162 | [groups]({{< ref "./groups/_index.md" >}}) |
|
||||
| 9163 | [ocdav]({{< ref "./ocdav/_index.md" >}}) |
|
||||
| 9164 | [groups]({{< ref "./groups/_index.md" >}}) |
|
||||
| 9165 | [app-provider]({{< ref "./app-provider/_index.md" >}}) |
|
||||
| 9166-9169 | [auth-machine]({{< ref "./auth-machine/_index.md" >}}) |
|
||||
| 9170-9174 | [notifications]({{< ref "./notifications/_index.md" >}}) |
|
||||
| 9175-9179 | [storage-publiclink]({{< ref "./storage-publiclink/_index.md" >}}) |
|
||||
| 9180-9184 | FREE (formerly used by accounts) |
|
||||
| 9185-9189 | [thumbnails]({{< ref "./thumbnails/_index.md" >}}) |
|
||||
| 9190-9194 | [settings]({{< ref "./settings/_index.md" >}}) |
|
||||
| 9195-9199 | FREE |
|
||||
| 9200-9204 | [proxy]({{< ref "./proxy/_index.md" >}}) |
|
||||
| 9205-9209 | [proxy]({{< ref "./proxy/_index.md" >}}) |
|
||||
| 9210-9214 | FREE |
|
||||
| 9215-9219 | [storage-system]({{< ref "./storage-system/_index.md" >}}) |
|
||||
| 9220-9224 | [search]({{< ref "./search/_index.md" >}}) |
|
||||
| 9225-9229 | FREE |
|
||||
| 9230-9234 | [nats]({{< ref "./nats/_index.md" >}}) |
|
||||
| 9235-9239 | [idm]({{< ref "./idm/_index.md" >}}) |
|
||||
| 9240-9244 | [app-registry]({{< ref "./app-registry/_index.md" >}}) |
|
||||
| 9245-9249 | FREE |
|
||||
| 9250-9254 | [ocis server (runtime)](https://github.com/owncloud/ocis/tree/master/ocis/pkg/runtime) |
|
||||
| 9255-9259 | FREE |
|
||||
| 9260-9264 | FREE |
|
||||
| 9265-9269 | FREE |
|
||||
| 9270-9274 | FREE |
|
||||
| 9275-9279 | FREE |
|
||||
| 9280-9284 | FREE |
|
||||
| 9285-9289 | FREE |
|
||||
| 9290-9294 | FREE |
|
||||
| 9295-9299 | FREE |
|
||||
| 9300-9304 | FREE |
|
||||
| 9305-9309 | FREE |
|
||||
| 9310-9314 | FREE |
|
||||
| 9315-9319 | FREE |
|
||||
| 9320-9324 | FREE |
|
||||
| 9325-9329 | FREE |
|
||||
| 9330-9334 | FREE |
|
||||
| 9335-9339 | FREE |
|
||||
| 9340-9344 | FREE |
|
||||
| 9345-9349 | FREE |
|
||||
| 9350-9354 | FREE |
|
||||
| 9355-9359 | FREE |
|
||||
| 9360-9364 | FREE |
|
||||
| 9365-9369 | FREE |
|
||||
| 9370-9374 | FREE |
|
||||
| 9375-9379 | FREE |
|
||||
| 9380-9384 | FREE |
|
||||
| 9385-9389 | FREE |
|
||||
| 9390-9394 | FREE |
|
||||
| 9395-9399 | FREE |
|
||||
| 9400-9404 | FREE |
|
||||
| 9405-9409 | FREE |
|
||||
| 9410-9414 | FREE |
|
||||
| 9415-9419 | FREE |
|
||||
| 9420-9424 | FREE |
|
||||
| 9425-9429 | FREE |
|
||||
| 9430-9434 | FREE |
|
||||
| 9435-9439 | FREE |
|
||||
| 9440-9444 | FREE |
|
||||
| 9445-9449 | FREE |
|
||||
| 9450-9454 | FREE |
|
||||
| 9455-9459 | FREE |
|
||||
| 9460-9464 | [store]({{< ref "./store/_index.md" >}}) |
|
||||
| 9465-9469 | FREE |
|
||||
| 9470-9474 | FREE |
|
||||
| 9475-9479 | FREE |
|
||||
| 9480-9484 | FREE |
|
||||
| 9485-9489 | FREE |
|
||||
| 9490-9494 | FREE |
|
||||
| 9495-9499 | FREE |
|
||||
| 9500-9504 | FREE |
|
||||
| 9505-9509 | FREE |
|
||||
| 9510-9514 | FREE |
|
||||
| 9515-9519 | FREE |
|
||||
| 9520-9524 | FREE |
|
||||
| 9525-9529 | FREE |
|
||||
| 9530-9534 | FREE |
|
||||
| 9535-9539 | FREE |
|
||||
| 9540-9544 | FREE |
|
||||
| 9545-9549 | FREE |
|
||||
| 9550-9554 | FREE |
|
||||
| 9555-9559 | FREE |
|
||||
| 9560-9564 | FREE |
|
||||
| 9565-9569 | FREE |
|
||||
| 9570-9574 | FREE |
|
||||
| 9575-9579 | FREE |
|
||||
| 9580-9584 | FREE |
|
||||
| 9585-9589 | FREE |
|
||||
| 9590-9594 | FREE |
|
||||
| 9595-9599 | FREE |
|
||||
| 9600-9604 | FREE |
|
||||
| 9605-9609 | FREE |
|
||||
| 9610-9614 | FREE |
|
||||
| 9615-9619 | FREE |
|
||||
| 9620-9624 | FREE |
|
||||
| 9625-9629 | FREE |
|
||||
| 9630-9634 | FREE |
|
||||
| 9635-9639 | FREE |
|
||||
| 9640-9644 | FREE |
|
||||
| 9645-9649 | FREE |
|
||||
| 9650-9654 | FREE |
|
||||
| 9655-9659 | FREE |
|
||||
| 9660-9664 | FREE |
|
||||
| 9665-9669 | FREE |
|
||||
| 9670-9674 | FREE |
|
||||
| 9675-9679 | FREE |
|
||||
| 9680-9684 | FREE |
|
||||
| 9685-9689 | FREE |
|
||||
| 9690-9694 | FREE |
|
||||
| 9695-9699 | FREE |
|
||||
| 9700-9704 | FREE |
|
||||
| 9705-9709 | FREE |
|
||||
| 9710-9714 | FREE |
|
||||
| 9715-9719 | FREE |
|
||||
| 9720-9724 | FREE |
|
||||
| 9725-9729 | FREE |
|
||||
| 9730-9734 | FREE |
|
||||
| 9735-9739 | FREE |
|
||||
| 9740-9744 | FREE |
|
||||
| 9745-9749 | FREE |
|
||||
| 9750-9754 | FREE |
|
||||
| 9755-9759 | FREE |
|
||||
| 9760-9764 | FREE |
|
||||
| 9765-9769 | FREE |
|
||||
| 9770-9774 | FREE |
|
||||
| 9775-9779 | FREE |
|
||||
| 9780-9784 | FREE |
|
||||
| 9785-9789 | FREE |
|
||||
| 9790-9794 | FREE |
|
||||
| 9795-9799 | FREE |
|
||||
| 9800-9804 | FREE |
|
||||
| 9805-9809 | FREE |
|
||||
| 9810-9814 | FREE |
|
||||
| 9815-9819 | FREE |
|
||||
| 9820-9824 | FREE |
|
||||
| 9825-9829 | FREE |
|
||||
| 9830-9834 | FREE |
|
||||
| 9835-9839 | FREE |
|
||||
| 9840-9844 | FREE |
|
||||
| 9845-9849 | FREE |
|
||||
| 9850-9854 | FREE |
|
||||
| 9855-9859 | FREE |
|
||||
| 9860-9864 | FREE |
|
||||
| 9865-9869 | FREE |
|
||||
| 9870-9874 | FREE |
|
||||
| 9875-9879 | FREE |
|
||||
| 9880-9884 | FREE |
|
||||
| 9885-9889 | FREE |
|
||||
| 9890-9894 | FREE |
|
||||
| 9895-9899 | FREE |
|
||||
| 9900-9904 | FREE |
|
||||
| 9905-9909 | FREE |
|
||||
| 9910-9914 | FREE |
|
||||
| 9915-9919 | FREE |
|
||||
| 9920-9924 | FREE |
|
||||
| 9925-9929 | FREE |
|
||||
| 9930-9934 | FREE |
|
||||
| 9935-9939 | FREE |
|
||||
| 9940-9944 | FREE |
|
||||
| 9945-9949 | FREE |
|
||||
| 9950-9954 | FREE |
|
||||
| 9955-9959 | FREE |
|
||||
| 9960-9964 | FREE |
|
||||
| 9965-9969 | FREE |
|
||||
| 9970-9974 | FREE |
|
||||
| 9975-9979 | FREE |
|
||||
| 9980-9984 | FREE |
|
||||
| 9985-9989 | FREE |
|
||||
| 9990-9994 | FREE |
|
||||
| 9995-9999 | FREE |
|
||||
1
docs/services/proxy/.gitignore
vendored
Normal file
1
docs/services/proxy/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
grpc.md
|
||||
16
docs/services/proxy/_index.md
Normal file
16
docs/services/proxy/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Proxy
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/proxy
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service provides a proxy service that routes requests to the correct extensions.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/proxy/configuration.md
Normal file
15
docs/services/proxy/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/proxy
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/proxy-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/proxy_configvars.md" >}}
|
||||
16
docs/services/search/_index.md
Normal file
16
docs/services/search/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Search
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/search
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service provides search functionality.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/search/configuration.md
Normal file
15
docs/services/search/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/search
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/search-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/search_configvars.md" >}}
|
||||
1
docs/services/settings/.gitignore
vendored
Normal file
1
docs/services/settings/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
grpc.md
|
||||
51
docs/services/settings/_index.md
Normal file
51
docs/services/settings/_index.md
Normal file
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: "Settings"
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/settings
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
When using oCIS, the requirement to store settings arises. This extension provides functionality
|
||||
for other extensions to register new settings within oCIS. It is responsible for storing the respective
|
||||
settings values as well.
|
||||
|
||||
For ease of use, this extension provides an ocis-web extension which allows users to change their settings values.
|
||||
Please refer to the [ocis-web extension docs]({{< ref "../../ocis/development/extensions/#external-ownCloud-Web-apps" >}})
|
||||
for running ocis-web extensions.
|
||||
|
||||
{{< mermaid class="text-center">}}
|
||||
graph TD
|
||||
subgraph ow[ocis-web]
|
||||
ows[ocis-web-settings]
|
||||
owc[ocis-web-core]
|
||||
end
|
||||
ows ---|"listSettingsBundles(),<br>saveSettingsValue(value)"| os[ocis-settings]
|
||||
owc ---|"listSettingsValues()"| sdk[oC SDK]
|
||||
sdk --- sdks{ocis-settings<br>available?}
|
||||
sdks ---|"yes"| os
|
||||
sdks ---|"no"| defaults[Use set of<br>default values]
|
||||
oa[oCIS extensions<br>e.g. ocis-accounts] ---|"saveSettingsBundle(bundle)"| os
|
||||
{{< /mermaid >}}
|
||||
|
||||
The diagram shows how the settings service integrates into oCIS:
|
||||
|
||||
**Settings management:**
|
||||
- oCIS extensions can register *settings bundles* with the ocis-settings service.
|
||||
- The settings frontend can be plugged into ocis-web, showing forms for changing *settings values* as a user.
|
||||
The forms are generated from the registered *settings bundles*.
|
||||
|
||||
**Settings usage:**
|
||||
- Extensions can query ocis-settings for *settings values* of a user.
|
||||
- The ownCloud SDK, used as a data abstraction layer for ocis-web, will query ocis-settings for *settings values* of a user,
|
||||
if it's available. The SDK uses sensible defaults when ocis-settings is not part of the setup.
|
||||
|
||||
For compatibility with ownCloud 10, a migration of ownCloud 10 settings into the storage of ocis-settings will be available.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
75
docs/services/settings/bundles.md
Normal file
75
docs/services/settings/bundles.md
Normal file
@@ -0,0 +1,75 @@
|
||||
---
|
||||
title: "Settings Bundles"
|
||||
date: 2020-05-04T00:00:00+00:00
|
||||
weight: 50
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/settings
|
||||
geekdocFilePath: bundles.md
|
||||
---
|
||||
|
||||
A **Settings Bundle** is a collection of settings, uniquely identified by the key of the
|
||||
extension registering the bundle and the key of the bundle itself. Its purpose is to let
|
||||
oCIS extensions define settings and make them available to users. They are dynamically
|
||||
rendered into forms, available in the frontend.
|
||||
|
||||
As of now we support five different types of settings:
|
||||
- boolean
|
||||
- integer
|
||||
- string
|
||||
- single choice list of integers or strings
|
||||
- multiple choice list of integers or strings
|
||||
|
||||
Each **Setting** is uniquely identified by a key within the bundle. Some attributes
|
||||
depend on the chosen type of setting. Through the information provided with the
|
||||
attributes of the setting, the settings frontend dynamically renders form elements,
|
||||
allowing users to change their settings individually.
|
||||
|
||||
## Example
|
||||
|
||||
```json
|
||||
{
|
||||
"identifier": {
|
||||
"extension": "ocis-accounts",
|
||||
"bundleKey": "profile"
|
||||
},
|
||||
"displayName": "Profile",
|
||||
"settings": [
|
||||
{
|
||||
"settingKey": "lastname",
|
||||
"displayName": "Lastname",
|
||||
"description": "Input for lastname",
|
||||
"stringValue": {
|
||||
"placeholder": "Set lastname"
|
||||
}
|
||||
},
|
||||
{
|
||||
"settingKey": "age",
|
||||
"displayName": "Age",
|
||||
"description": "Input for age",
|
||||
"intValue": {
|
||||
"min": "16",
|
||||
"max": "200",
|
||||
"step": "2",
|
||||
"placeholder": "Set age"
|
||||
}
|
||||
},
|
||||
{
|
||||
"settingKey": "timezone",
|
||||
"displayName": "Timezone",
|
||||
"description": "User timezone",
|
||||
"singleChoiceValue": {
|
||||
"options": [
|
||||
{
|
||||
"stringValue": "Europe/Berlin",
|
||||
"displayValue": "Europe/Berlin"
|
||||
},
|
||||
{
|
||||
"stringValue": "Asia/Kathmandu",
|
||||
"displayValue": "Asia/Kathmandu"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
15
docs/services/settings/configuration.md
Normal file
15
docs/services/settings/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/settings
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/settings-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/settings_configvars.md" >}}
|
||||
42
docs/services/settings/glossary.md
Normal file
42
docs/services/settings/glossary.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "Glossary"
|
||||
date: 2020-05-04T12:35:00+01:00
|
||||
weight: 80
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/settings
|
||||
geekdocFilePath: glossary.md
|
||||
---
|
||||
|
||||
In the context of this extension and oCIS in general, we are using the following terminology.
|
||||
|
||||
### Configuration
|
||||
|
||||
- System configuration
|
||||
- e.g. service host names and ports
|
||||
- Changes need to be propagated to other services
|
||||
- Typically modified on the CLI
|
||||
|
||||
### Settings
|
||||
|
||||
- Application level settings
|
||||
- e.g. default language
|
||||
- Can be modified at runtime without restarting the service
|
||||
- Typically modified in the UI
|
||||
|
||||
### Preferences
|
||||
|
||||
- User settings
|
||||
- Subset of "Settings"
|
||||
- e.g. preferred language of a user
|
||||
|
||||
### Settings Bundle
|
||||
|
||||
- Collection of related settings
|
||||
- Registered by an oCIS extension
|
||||
|
||||
### Settings Value
|
||||
|
||||
- Manifestation of a setting for a specific user
|
||||
- E.g. used for customization (at runtime) in `ocis-web`
|
||||
- `ocis-web-settings` extension for modifying settings values is provided by this service
|
||||
- Can be queried and modified by other oCIS extensions
|
||||
22
docs/services/settings/releasing.md
Normal file
22
docs/services/settings/releasing.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: "Releasing"
|
||||
weight: 70
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/settings
|
||||
geekdocFilePath: releasing.md
|
||||
---
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
## Requirements
|
||||
|
||||
You need a working installation of [the Go programming language](https://golang.org/), [the Node runtime](https://nodejs.org/) and [the Yarn package manager](https://yarnpkg.com/) installed to build the assets for a working release.
|
||||
|
||||
## Releasing
|
||||
|
||||
The settings service doesn't have a dedicated release process. Simply commit your changes, make sure linting and unit tests pass locally and open a pull request.
|
||||
|
||||
### Package Hierarchy
|
||||
|
||||
- [ocis](https://github.com/owncloud/ocis)
|
||||
- [ocis-settings](https://github.com/owncloud/ocis/tree/master/settings)
|
||||
76
docs/services/settings/tests.md
Normal file
76
docs/services/settings/tests.md
Normal file
@@ -0,0 +1,76 @@
|
||||
---
|
||||
title: "Tests"
|
||||
weight: 90
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/settings
|
||||
geekdocFilePath: tests.md
|
||||
---
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
## Requirements
|
||||
|
||||
You need a working installation of [the Go programming language](https://golang.org/), [the Node runtime](https://nodejs.org/) and [the Yarn package manager](https://yarnpkg.com/) installed to run the acceptance tests. You may also want to use [Docker](https://www.docker.com/) to start the necessary services in their respective containers.
|
||||
|
||||
## Acceptance Tests
|
||||
|
||||
Make sure you've cloned the [web frontend repo](https://github.com/owncloud/web/) and the [infinite scale repo](https://github.com/owncloud/ocis/) next to each other. If your file/folder structure is different, you'll have to change the paths below accordingly.
|
||||
|
||||
### In the web repo
|
||||
|
||||
#### **Optional:** Build web to test local changes
|
||||
|
||||
Install dependencies and bundle the frontend with a watcher by running
|
||||
|
||||
```bash
|
||||
yarn && yarn build:w
|
||||
```
|
||||
|
||||
If you skip the step above, the currently bundled frontend from the oCIS binary will be used.
|
||||
|
||||
#### Dockerized acceptance test services
|
||||
|
||||
Start the necessary acceptance test services by using Docker (Compose):
|
||||
|
||||
```bash
|
||||
docker compose up selenium middleware-ocis vnc
|
||||
```
|
||||
|
||||
### In the oCIS repo
|
||||
|
||||
#### **Optional:** Build settings UI to test local changes
|
||||
|
||||
Navigate into the settings service via `cd ../settings/` and install dependencies and build the bundled settings UI with a watcher by running
|
||||
|
||||
```bash
|
||||
yarn && yarn watch
|
||||
```
|
||||
|
||||
#### Start oCIS from binary
|
||||
|
||||
Navigate into the oCIS directory inside the oCIS repository and build the oCIS binary by running
|
||||
|
||||
```bash
|
||||
make clean build
|
||||
```
|
||||
|
||||
Then, start oCIS from the binary via
|
||||
|
||||
```bash
|
||||
ocis init
|
||||
OCIS_URL=https://host.docker.internal:9200 OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true WEB_UI_CONFIG=../../web/dev/docker/ocis.web.config.json ./bin/ocis server
|
||||
```
|
||||
|
||||
If you've built the web bundle locally in its repository, you also need to reference the bundle output in the above command: `WEB_ASSET_PATH=../../web/dist`
|
||||
|
||||
If you've built the settings UI bundle locally, you also need to reference the bundle output in the above command: `SETTINGS_ASSET_PATH=../settings/assets/`
|
||||
|
||||
#### Run settings acceptance tests
|
||||
|
||||
If you want visual feedback on the test run, visit http://host.docker.internal:6080/ in your browser and connect to the VNC client.
|
||||
|
||||
Navigate into the settings service via `cd ../settings/` and start the acceptance tests by running
|
||||
|
||||
```bash
|
||||
SERVER_HOST=https://host.docker.internal:9200 BACKEND_HOST=https://host.docker.internal:9200 RUN_ON_OCIS=true NODE_TLS_REJECT_UNAUTHORIZED=0 WEB_PATH=../../web WEB_UI_CONFIG=../../web/tests/drone/config-ocis.json MIDDLEWARE_HOST=http://host.docker.internal:3000 ./ui/tests/run-acceptance-test.sh ./ui/tests/acceptance/features/
|
||||
```
|
||||
75
docs/services/settings/values.md
Normal file
75
docs/services/settings/values.md
Normal file
@@ -0,0 +1,75 @@
|
||||
---
|
||||
title: "Settings Values"
|
||||
date: 2020-05-04T00:00:00+00:00
|
||||
weight: 51
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/settings
|
||||
geekdocFilePath: values.md
|
||||
---
|
||||
|
||||
A **Settings Value** is the value an authenticated user has chosen for a specific setting, defined in a
|
||||
*settings bundle*. For choosing settings values as a user the sole entry point is the ocis-web extension
|
||||
provided by this service.
|
||||
|
||||
## Identifying settings values
|
||||
|
||||
A *settings value* is uniquely identified by four attributes. Three of them are coming from the definition of
|
||||
the setting within it's settings bundle (see [Settings Bundles]({{< ref "bundles" >}})
|
||||
for an example). The fourth identifies the user.
|
||||
- extension: Key of the extension that registered the settings bundle,
|
||||
- bundleKey: Key of the settings bundle,
|
||||
- settingKey: Key of the setting as defined within the bundle,
|
||||
- accountUuid: The UUID of the authenticated user who has saved the setting.
|
||||
|
||||
{{< hint info >}}
|
||||
When requests are going through `ocis-proxy`, the accountUuid attribute can be set to the static keyword `me`
|
||||
instead of using a real UUID. `ocis-proxy` will take care of minting the UUID of the authenticated user into
|
||||
a JWT, providing it in the HTTP header as `x-access-token`. That UUID is then used in this service, to replace
|
||||
`me` with the actual UUID of the authenticated user.
|
||||
{{< /hint >}}
|
||||
|
||||
## Example of stored settings values
|
||||
|
||||
```json
|
||||
{
|
||||
"values": {
|
||||
"language": {
|
||||
"identifier": {
|
||||
"extension": "ocis-accounts",
|
||||
"bundleKey": "profile",
|
||||
"settingKey": "language",
|
||||
"accountUuid": "5681371f-4a6e-43bc-8bb5-9c9237fa9c58"
|
||||
},
|
||||
"listValue": {
|
||||
"values": [
|
||||
{
|
||||
"stringValue": "de"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"timezone": {
|
||||
"identifier": {
|
||||
"extension": "ocis-accounts",
|
||||
"bundleKey": "profile",
|
||||
"settingKey": "timezone",
|
||||
"accountUuid": "5681371f-4a6e-43bc-8bb5-9c9237fa9c58"
|
||||
},
|
||||
"listValue": {
|
||||
"values": [
|
||||
{
|
||||
"stringValue": "Europe/Berlin"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## gRPC endpoints
|
||||
The obvious way of modifying settings is the ocis-web extension, as described earlier. However, services can
|
||||
use the respective gRPC endpoints of the `ValueService` to query and modify *settings values* as well.
|
||||
The gRPC endpoints require the same identifier attributes as described above, so for making a request to
|
||||
the `ValueService` you will have to make sure that the accountUuid of the authenticated user is available in
|
||||
your service at the time of the request.
|
||||
16
docs/services/sharing/_index.md
Normal file
16
docs/services/sharing/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Sharing
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/sharing
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service provides sharing functionality.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/sharing/configuration.md
Normal file
15
docs/services/sharing/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/sharing
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/sharing-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/sharing_configvars.md" >}}
|
||||
16
docs/services/storage-publiclink/_index.md
Normal file
16
docs/services/storage-publiclink/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Storage-Publiclink
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/storage-publiclink
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/storage-publiclink/configuration.md
Normal file
15
docs/services/storage-publiclink/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/storage-publiclink
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/storage-publiclink-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/storage-publiclink_configvars.md" >}}
|
||||
16
docs/services/storage-shares/_index.md
Normal file
16
docs/services/storage-shares/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Storage-Shares
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/storage-shares
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/storage-shares/configuration.md
Normal file
15
docs/services/storage-shares/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/storage-shares
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/storage-shares-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/storage-shares_configvars.md" >}}
|
||||
16
docs/services/storage-system/_index.md
Normal file
16
docs/services/storage-system/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Storage-System
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/storage-system
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/storage-system/configuration.md
Normal file
15
docs/services/storage-system/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/storage-system
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/storage-system-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/storage-system_configvars.md" >}}
|
||||
16
docs/services/storage-users/_index.md
Normal file
16
docs/services/storage-users/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Storage-Users
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/storage-users
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/storage-users/configuration.md
Normal file
15
docs/services/storage-users/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/storage-users
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/storage-users-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/storage-users_configvars.md" >}}
|
||||
1
docs/services/store/.gitignore
vendored
Normal file
1
docs/services/store/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
grpc.md
|
||||
18
docs/services/store/_index.md
Normal file
18
docs/services/store/_index.md
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: "Store"
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/store
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service provides ...
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/store/configuration.md
Normal file
15
docs/services/store/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/store
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/store-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/store_configvars.md" >}}
|
||||
1
docs/services/thumbnails/.gitignore
vendored
Normal file
1
docs/services/thumbnails/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
grpc.md
|
||||
18
docs/services/thumbnails/_index.md
Normal file
18
docs/services/thumbnails/_index.md
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: "Thumbnails"
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/thumbnails
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service provides an ocis extensions which generates thumbnails for image files.
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/thumbnails/configuration.md
Normal file
15
docs/services/thumbnails/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/thumbnails
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/thumbnails-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/thumbnails_configvars.md" >}}
|
||||
16
docs/services/users/_index.md
Normal file
16
docs/services/users/_index.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Users
|
||||
date: 2022-03-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/users
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/users/configuration.md
Normal file
15
docs/services/users/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/users
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/users-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/users_configvars.md" >}}
|
||||
1
docs/services/web/.gitignore
vendored
Normal file
1
docs/services/web/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
grpc.md
|
||||
18
docs/services/web/_index.md
Normal file
18
docs/services/web/_index.md
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: "Web"
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/web
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service embeds [ownCloud Web](https://github.com/owncloud/web) to provide a UI for ownCloud Infinite Scale.
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/web/configuration.md
Normal file
15
docs/services/web/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/web
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/web-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/web_configvars.md" >}}
|
||||
37
docs/services/web/releasing.md
Normal file
37
docs/services/web/releasing.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Releasing"
|
||||
weight: 40
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/web
|
||||
geekdocFilePath: releasing.md
|
||||
---
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
## Releasing
|
||||
|
||||
The next generation Web Frontend is shipped as an oCIS Extension. The `ocis-web` extension is also embedded in the single binary and part of the `ocis server` command.
|
||||
|
||||
To update this package within all the deliveries, we need to update the package in the following chain from the bottom to the top.
|
||||
|
||||
### Package Hierarchy
|
||||
|
||||
- [ocis](https://github.com/owncloud/ocis)
|
||||
- [ocis-web](https://github.com/owncloud/ocis/tree/master/web)
|
||||
- [ocis-pkg](https://github.com/owncloud/ocis/tree/master/ocis-pkg)
|
||||
- [ownCloud Web](https://github.com/owncloud/web)
|
||||
|
||||
#### Prerequisites
|
||||
|
||||
Before updating the assets, make sure that [ownCloud Web](https://github.com/owncloud/web) has been released first
|
||||
and take note of its release tag name.
|
||||
|
||||
#### Updating ocis-web
|
||||
|
||||
1. Create a branch `update-web-$version` in the [ocis repository](https://github.com/owncloud/ocis)
|
||||
2. Change into web package folder via `cd web`
|
||||
3. Inside `web/`, update the `Makefile` so that the WEB_ASSETS_VERSION variable references the currently released version of https://github.com/owncloud/web
|
||||
4. Move to the changelog (`cd ../changelog/`) and add a changelog file to the `unreleased/` folder (You can copy an old web release changelog item as a template)
|
||||
5. Move to the repo root (`cd ..`)and update the WEB_COMMITID in the `/.drone.env` file to the commit id from the released version (unless the existing commit id is already newer)
|
||||
6. **Optional:** Test the changes locally by running `cd ocis && go run cmd/ocis/main.go server`, visiting [https://localhost:9200](https://localhost:9200) and confirming everything renders correctly
|
||||
7. Commit your changes, push them and [create a PR](https://github.com/owncloud/ocis/pulls)
|
||||
1
docs/services/webdav/.gitignore
vendored
Normal file
1
docs/services/webdav/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
grpc.md
|
||||
17
docs/services/webdav/_index.md
Normal file
17
docs/services/webdav/_index.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: WebDAV
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/webdav
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
This service provides preview (thumbnails) endpoints on the WebDAV API and therefore extends the main WebDAV API provided by the [oCDAV service]({{ ../../ocdav }}).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
{{< toc-tree >}}
|
||||
15
docs/services/webdav/configuration.md
Normal file
15
docs/services/webdav/configuration.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Service Configuration
|
||||
date: 2018-05-02T00:00:00+00:00
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/webdav
|
||||
geekdocFilePath: configuration.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Example YAML Config
|
||||
|
||||
{{< include file="services/_includes/webdav-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/webdav_configvars.md" >}}
|
||||
Reference in New Issue
Block a user