diff --git a/.drone.star b/.drone.star index a204a15ed..296e37aa6 100644 --- a/.drone.star +++ b/.drone.star @@ -126,12 +126,148 @@ def testing(ctx): }, }, }, + { + 'name': 'ocis-server', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'detach': True, + 'environment' : { + 'REVA_LDAP_HOSTNAME': 'ldap', + 'REVA_LDAP_PORT': 636, + 'REVA_LDAP_BIND_PASSWORD': 'admin', + 'REVA_LDAP_BIND_DN': 'cn=admin,dc=owncloud,dc=com', + 'REVA_LDAP_BASE_DN': 'dc=owncloud,dc=com', + 'REVA_LDAP_SCHEMA_UID': 'uid', + 'REVA_LDAP_SCHEMA_MAIL': 'mail', + 'REVA_LDAP_SCHEMA_DISPLAYNAME': 'displayName', + 'REVA_STORAGE_HOME_DATA_TEMP_FOLDER': '/srv/app/tmp/', + 'REVA_STORAGE_LOCAL_ROOT': '/srv/app/tmp/reva/root', + 'REVA_STORAGE_OWNCLOUD_DATADIR': '/srv/app/tmp/reva/data', + 'REVA_STORAGE_OC_DATA_TEMP_FOLDER': '/srv/app/tmp/', + 'REVA_STORAGE_OWNCLOUD_REDIS_ADDR': 'redis:6379', + 'REVA_OIDC_ISSUER': 'https://ocis-server:9200', + 'REVA_STORAGE_OC_DATA_SERVER_URL': 'http://ocis-server:9164/data', + 'PHOENIX_WEB_CONFIG': '/drone/src/tests/config/drone/ocis-config.json', + 'PHOENIX_ASSET_PATH': '/srv/app/phoenix/dist', + 'KONNECTD_IDENTIFIER_REGISTRATION_CONF': '/drone/src/tests/config/drone/identifier-registration.yml', + 'KONNECTD_ISS': 'https://ocis-server:9200', + 'KONNECTD_TLS': 'true', + 'LDAP_URI': 'ldap://ldap', + 'LDAP_BINDDN': 'cn=admin,dc=owncloud,dc=com', + 'LDAP_BINDPW': 'admin', + 'LDAP_BASEDN': 'dc=owncloud,dc=com' + }, + 'commands': [ + 'apk add mailcap', # install /etc/mime.types + 'mkdir -p /srv/app/tmp/reva', + 'bin/ocis server' + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app' + }, + ] + }, + { + 'name': 'oC10APIAcceptanceTests', + 'image': 'owncloudci/php:7.2', + 'pull': 'always', + 'environment' : { + 'TEST_SERVER_URL': 'http://ocis-server:9140', + 'OCIS_REVA_DATA_ROOT': '/srv/app/tmp/reva/', + 'SKELETON_DIR': '/srv/app/tmp/testing/data/apiSkeleton', + 'TEST_EXTERNAL_USER_BACKENDS':'true', + 'REVA_LDAP_HOSTNAME':'ldap', + 'TEST_OCIS':'true', + 'BEHAT_FILTER_TAGS': '~@skipOnOcis&&~@skipOnLDAP&&@TestAlsoOnExternalUserBackend&&~@local_storage', + }, + 'commands': [ + 'git clone -b master --depth=1 https://github.com/owncloud/testing.git /srv/app/tmp/testing', + 'git clone -b master --depth=1 https://github.com/owncloud/core.git /srv/app/testrunner', + 'cd /srv/app/testrunner', + 'make test-acceptance-api', + ], + 'volumes': [{ + 'name': 'gopath', + 'path': '/srv/app', + }] + }, + { + 'name': 'phoenixWebUIAcceptanceTests', + 'image': 'owncloudci/nodejs:10', + 'pull': 'always', + 'environment': { + 'SERVER_HOST': 'http://ocis-server:9100', + 'BACKEND_HOST': 'http://ocis-server:9140', + 'RUN_ON_OCIS': 'true', + 'OCIS_REVA_DATA_ROOT': '/srv/app/tmp/reva', + 'OCIS_SKELETON_DIR': '/srv/app/testing/data/webUISkeleton', + 'PHOENIX_CONFIG': '/drone/src/tests/config/drone/ocis-config.json', + 'LDAP_SERVER_URL': 'ldap://ldap', + 'TEST_TAGS': 'not @skipOnOCIS and not @skip', + 'LOCAL_UPLOAD_DIR': '/uploads' + }, + 'commands': [ + 'git clone -b master --depth=1 https://github.com/owncloud/testing.git /srv/app/testing', + 'git clone -b master --depth=1 https://github.com/owncloud/phoenix.git /srv/app/phoenix', + 'cp -r /srv/app/phoenix/tests/acceptance/filesForUpload/* /uploads', + 'cd /srv/app/phoenix', + 'yarn install-all', + 'yarn dist', + 'cp -r /drone/src/tests/config/drone/ocis-config.json /srv/app/phoenix/dist/config.json', + 'yarn run acceptance-tests-drone' + ], + 'volumes': [{ + 'name': 'gopath', + 'path': '/srv/app', + }, + { + 'name': 'uploads', + 'path': '/uploads' + }] + }, + ], + 'services': [ + { + 'name': 'ldap', + 'image': 'osixia/openldap', + 'pull': 'always', + 'environment': { + 'LDAP_DOMAIN': 'owncloud.com', + 'LDAP_ORGANISATION': 'ownCloud', + 'LDAP_ADMIN_PASSWORD': 'admin', + 'LDAP_TLS_VERIFY_CLIENT': 'never', + 'HOSTNAME': 'ldap' + }, + }, + { + 'name': 'redis', + 'image': 'webhippie/redis', + 'pull': 'always', + 'environment': { + 'REDIS_DATABASES': 1 + }, + }, + { + 'name': 'selenium', + 'image': 'selenium/standalone-chrome-debug:3.141.59-20200326', + 'pull': 'always', + 'volumes': [{ + 'name': 'uploads', + 'path': '/uploads' + }], + }, ], 'volumes': [ { 'name': 'gopath', 'temp': {}, }, + { + 'name': 'uploads', + 'temp': {} + } ], 'trigger': { 'ref': [ diff --git a/.gitignore b/.gitignore index 7e6ba9b43..90d38351b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ coverage.out /hugo *.key *crt + +/eos-docker \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index df20b2919..4f1d6da3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,16 @@ ## Summary * Change - Add the thumbnails command: [#156](https://github.com/owncloud/ocis/issues/156) +* Change - Integrate import command from ocis-migration: [#249](https://github.com/owncloud/ocis/pull/249) * Change - Initial release of basic version: [#2](https://github.com/owncloud/ocis/issues/2) +* Change - Start ocis-accounts with the ocis server command: [#25](https://github.com/owncloud/product/issues/25) * Change - Start ocis-proxy with the ocis server command: [#119](https://github.com/owncloud/ocis/issues/119) +* Enhancement - Document how to run OCIS on top of EOS: [#172](https://github.com/owncloud/ocis/pull/172) +* Enhancement - Update extensions: [#180](https://github.com/owncloud/ocis/pull/180) +* Enhancement - Update extensions: [#209](https://github.com/owncloud/ocis/pull/209) * Enhancement - Update extensions: [#151](https://github.com/owncloud/ocis/pull/151) +* Enhancement - Update extensions: [#209](https://github.com/owncloud/ocis/pull/209) +* Enhancement - Update proxy to v0.2.0: [#167](https://github.com/owncloud/ocis/pull/167) ## Details @@ -16,6 +23,12 @@ https://github.com/owncloud/ocis/issues/156 +* Change - Integrate import command from ocis-migration: [#249](https://github.com/owncloud/ocis/pull/249) + + https://github.com/owncloud/ocis/pull/249 + https://github.com/owncloud/ocis-migration + + * Change - Initial release of basic version: [#2](https://github.com/owncloud/ocis/issues/2) Just prepared an initial basic version which simply embeds the minimum of required services in @@ -24,6 +37,15 @@ https://github.com/owncloud/ocis/issues/2 +* Change - Start ocis-accounts with the ocis server command: [#25](https://github.com/owncloud/product/issues/25) + + Starts ocis-accounts in single binary mode (./ocis server). This service stores the + user-account information. + + https://github.com/owncloud/product/issues/25 + https://github.com/owncloud/ocis/pull/239/files + + * Change - Start ocis-proxy with the ocis server command: [#119](https://github.com/owncloud/ocis/issues/119) Starts the proxy in single binary mode (./ocis server) on port 9200. The proxy serves as a @@ -33,13 +55,50 @@ https://github.com/owncloud/ocis/issues/136 +* Enhancement - Document how to run OCIS on top of EOS: [#172](https://github.com/owncloud/ocis/pull/172) + + We have added rules to the Makefile that use the official [eos docker + images](https://gitlab.cern.ch/eos/eos-docker) to boot an eos cluster and configure OCIS + to use it. + + https://github.com/owncloud/ocis/pull/172 + + +* Enhancement - Update extensions: [#180](https://github.com/owncloud/ocis/pull/180) + + We've updated various extensions to a tagged release: - ocis-phoenix v0.4.0 (phoenix v0.7.0) + - ocis-pkg v2.2.0 - ocis-proxy v0.3.1 - ocis-reva v0.1.1 - ocis-thumbnails v0.1.0 - + ocis-webdav v0.1.0 + + https://github.com/owncloud/ocis/pull/180 + + +* Enhancement - Update extensions: [#209](https://github.com/owncloud/ocis/pull/209) + + We've updated various extensions: - ocis-konnectd v0.3.1 - ocis-phoenix v0.5.0 (phoenix + v0.8.0) - ocis-reva v0.2.0 + + https://github.com/owncloud/ocis/pull/209 + + * Enhancement - Update extensions: [#151](https://github.com/owncloud/ocis/pull/151) We've updated various extensions to a tagged release: - ocis-konnectd v0.2.0 - ocis-glauth - v0.4.0 - ocis-phoenix v0.3.0 (phoenix v0.6.0) - ocis-pkg v2.1.0 - ocis-proxy -v0.1.0 - - We also updated ocis-reva to a PR commit that brings the latest reva to ocis. Work on the PR is - ongoing because some acceptance tests fail. + v0.4.0 - ocis-phoenix v0.3.0 (phoenix v0.6.0) - ocis-pkg v2.1.0 - ocis-proxy v0.1.0 - + ocis-reva v0.1.0 https://github.com/owncloud/ocis/pull/151 + +* Enhancement - Update extensions: [#209](https://github.com/owncloud/ocis/pull/209) + + We've updated various extensions: - ocis-konnectd v0.3.1 - ocis-phoenix v0.6.0 - ocis-reva + v0.2.1 - ocis-pkg v2.2.1 - ocis-thumbnails v0.1.2 + + https://github.com/owncloud/ocis/pull/209 + + +* Enhancement - Update proxy to v0.2.0: [#167](https://github.com/owncloud/ocis/pull/167) + + https://github.com/owncloud/ocis/pull/167 + diff --git a/LICENSE b/LICENSE index d64569567..04a8b95c0 100644 --- a/LICENSE +++ b/LICENSE @@ -187,8 +187,8 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] - + Copyright 2020 ownCloud GmbH + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/Makefile b/Makefile index 777acfcb1..2103cce62 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,7 @@ IMPORT := github.com/owncloud/$(NAME) BIN := bin DIST := dist HUGO := hugo +CONFIG := config/identifier-registration.yaml ifeq ($(OS), Windows_NT) EXECUTABLE := $(NAME).exe @@ -57,10 +58,14 @@ sync: go mod download .PHONY: clean -clean: +clean: clean-config go clean -i ./... rm -rf $(BIN) $(DIST) $(HUGO) +.PHONY: clean-config +clean-config: + rm -rf $(CONFIG) + .PHONY: fmt fmt: gofmt -s -w $(SOURCES) @@ -102,6 +107,9 @@ $(BIN)/$(EXECUTABLE): $(SOURCES) $(BIN)/$(EXECUTABLE)-debug: $(SOURCES) $(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(DEBUG_LDFLAGS)' -gcflags '$(GCFLAGS)' -o $@ ./cmd/$(NAME) +$(BIN)/$(EXECUTABLE)-linux: $(SOURCES) + GOOS=linux GOARCH=amd64 $(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -gcflags '$(GCFLAGS)' -o $@ ./cmd/$(NAME) + .PHONY: release release: release-dirs release-linux release-windows release-darwin release-copy release-check @@ -144,13 +152,147 @@ docs-copy: git checkout origin/source -f; \ rsync --delete -ax ../docs/ content/$(NAME) +.PHONY: config-docs-generate +config-docs-generate: + go run github.com/owncloud/flaex >| docs/configuration.md + .PHONY: docs-build docs-build: cd $(HUGO); hugo .PHONY: docs -docs: docs-copy docs-build +docs: config-docs-generate docs-copy docs-build .PHONY: watch watch: go run github.com/cespare/reflex -c reflex.conf + +# ------------------------------------------------------------------------------- +# EOS related destinations +# ------------------------------------------------------------------------------- + +EOS_LDAP_HOST ?= host.docker.internal:9125 + +eos-docker: + git clone https://gitlab.cern.ch/eos/eos-docker.git + +eos-docker/scripts/start_services_ocis.sh: eos-docker + # TODO find a way to properly inject the following env vars into the container: + # EOS_UTF8=1 enables utf8 filenames + # EOS_NS_ACCOUNTING=1 enables dir size propagation + # EOS_SYNCTIME_ACCOUNTING=1 enables mtime propagation + # - needs the sys.mtime.propagation=1 on a home dir, handled by the reva eos storage driver + # - sys.allow.oc.sync=1 is not needed, it is an option for the eos built in webdav endpoint + # 1. -e: for now, we patch the start_services.sh and use that + # 2. -e: we need to expose the storageprovider ports whan running the docker containen + # TODO use port from address to open different ports, this currently only works for one client container + sed -e "s/--name eos-mgm1 --net/--name eos-mgm1 --env EOS_UTF8=1 --env EOS_NS_ACCOUNTING=1 --env EOS_SYNCTIME_ACCOUNTING=1 --net/" -e 's/--name $${CLIENTHOSTNAME} --net=eoscluster.cern.ch/--name $${CLIENTHOSTNAME} -p 9154:9154 -p 9155:9155 -p 9156:9156 -p 9157:9157 -p 9158:9158 -p 9159:9159 -p 9160:9160 -p 9161:9161 --net=eoscluster.cern.ch/' ./eos-docker/scripts/start_services.sh > ./eos-docker/scripts/start_services_ocis.sh + chmod +x ./eos-docker/scripts/start_services_ocis.sh + +.PHONY: eos-deploy +eos-deploy: eos-docker/scripts/start_services_ocis.sh + # TODO keep eos up to date: see https://gitlab.cern.ch/dss/eos/tags + ./eos-docker/scripts/start_services_ocis.sh -i gitlab-registry.cern.ch/dss/eos:4.7.12 -q + # Install ldap packages + docker exec -i eos-mgm1 yum install -y nss-pam-ldapd nscd authconfig + docker exec -i eos-cli1 yum install -y nss-pam-ldapd nscd authconfig + +.PHONY: eos-setup +eos-setup: eos-docker/scripts/start_services_ocis.sh + #Allow resolving uids against ldap + # 9125 is the ldap port, 9126 would be tls ... but self signed cert + # TODO check out the error message (ignoring for now ... still works): read LDAP host from env var, if not set fall back to docker host, in docker compose should be the ocis-glauth container because it contains guest accounts a well +ifeq ($(UNAME), Linux) + #on linux add host.docker.internal to hosts: https://stackoverflow.com/questions/714100/os-detecting-makefile + docker exec -it eos-mgm1 /bin/sh -c $$'echo -e "`/sbin/ip route | awk \'/default/ { print $$3 }\'`\thost.docker.internal" | sudo tee -a /etc/hosts > /dev/null' + docker exec -it eos-cli1 /bin/sh -c $$'echo -e "`/sbin/ip route | awk \'/default/ { print $$3 }\'`\thost.docker.internal" | sudo tee -a /etc/hosts > /dev/null' +endif + docker exec -i eos-mgm1 authconfig --enableldap --enableldapauth --ldapserver=$(EOS_LDAP_HOST) --ldapbasedn="dc=example,dc=org" --update; \ + docker exec -i eos-cli1 authconfig --enableldap --enableldapauth --ldapserver=$(EOS_LDAP_HOST) --ldapbasedn="dc=example,dc=org" --update; + + # setup users on mgm + #TODO Failed to get D-Bus connection: Operation not permitted\ngetsebool: SELinux is disabled + docker exec -i eos-mgm1 sed -i "s/#binddn cn=.*/binddn cn=reva,ou=sysusers,dc=example,dc=org/" /etc/nslcd.conf + docker exec -i eos-mgm1 sed -i "s/#bindpw .*/bindpw reva/" /etc/nslcd.conf + # print the actual authconfig + docker exec -i eos-mgm1 authconfig --test + # start nslcd. you need to restart it if you change the ldap config + docker exec -i eos-mgm1 nslcd + # use unix accounts + docker exec -i eos-mgm1 eos vid set map -unix "" vuid:0 vgid:0 + # allow cli to create homes + docker exec -i eos-mgm1 eos vid add gateway eos-cli1 + # krb not needed + docker exec -i eos-mgm1 eos vid disable krb5 + + # setup users on cli, same as for mgm + docker exec -i eos-cli1 sed -i "s/#binddn cn=.*/binddn cn=reva,ou=sysusers,dc=example,dc=org/" /etc/nslcd.conf + docker exec -i eos-cli1 sed -i "s/#bindpw .*/bindpw reva/" /etc/nslcd.conf + docker exec -i eos-cli1 nslcd + + # create necessary lib link for ocis + docker exec -i eos-cli1 ln -s /lib64/ld-linux-x86-64.so.2 /lib + +.PHONY: eos-test +eos-test: + # check we know the demo users + docker exec -i eos-mgm1 id einstein + docker exec -i eos-mgm1 id marie + docker exec -i eos-mgm1 id feynman + +.PHONY: eos-copy-ocis +eos-copy-ocis: build $(BIN)/$(EXECUTABLE)-linux + # copy the linux binary to the eos-cli1 container + docker cp ./bin/ocis-linux eos-cli1:/usr/local/bin/ocis + +.PHONY: eos-ocis-storage-home +eos-ocis-storage-home: + # configure the home storage to use the eos driver and return the mount id of the eos driver in responses + docker exec -i \ + --env OCIS_LOG_LEVEL=debug \ + --env REVA_STORAGE_HOME_DRIVER=eos \ + --env REVA_STORAGE_HOME_MOUNT_ID=1284d238-aa92-42ce-bdc4-0b0000009158 \ + eos-cli1 ocis reva-storage-home & + docker exec -i \ + --env OCIS_LOG_LEVEL=debug \ + --env REVA_STORAGE_HOME_DATA_DRIVER=eos \ + eos-cli1 ocis reva-storage-home-data & + docker exec -i \ + --env OCIS_LOG_LEVEL=debug \ + eos-cli1 ocis reva-storage-eos & + docker exec -i \ + --env OCIS_LOG_LEVEL=debug \ + eos-cli1 ocis reva-storage-eos-data & + +.PHONY: eos-ocis +eos-ocis: + export OCIS_LOG_LEVEL=debug; \ + export DAV_FILES_NAMESPACE="/eos/"; \ + bin/ocis micro & \ + bin/ocis glauth & \ + bin/ocis graph-explorer & \ + bin/ocis graph & \ + bin/ocis konnectd & \ + bin/ocis phoenix & \ + bin/ocis thumbnails & \ + bin/ocis webdav & \ + bin/ocis reva-auth-basic & \ + bin/ocis reva-auth-bearer & \ + bin/ocis reva-frontend & \ + bin/ocis reva-gateway & \ + bin/ocis reva-sharing & \ + bin/ocis reva-users & \ + bin/ocis proxy & + + +.PHONY: eos-start +eos-start: eos-deploy eos-setup eos-copy-ocis eos-ocis-storage-home eos-ocis + +.PHONY: eos-clean +eos-clean: + rm eos-docker/scripts/start_services_ocis.sh + +.PHONY: eos-stop +eos-stop: eos-docker + ./eos-docker/scripts/shutdown_services.sh + diff --git a/README.md b/README.md index f18afd5c8..2a3cf4871 100644 --- a/README.md +++ b/README.md @@ -42,19 +42,25 @@ mkdir -p /var/tmp/reva/root/{home,oc} ## Quickstart -After building the binary with the above steps and also setting up the prerequisites, run this command to start all services: +- Make sure that the binary was built with the above steps. -```console -./bin/ocis server -``` +- Now start all services with the following command -Open [https://localhost:9200](https://localhost:9200) and login using one of the demo accounts: + ```console + ./bin/ocis server + ``` -```console -albert:relativity -marie:radioactivty -richard:superfluidity -``` +- Open [https://localhost:9200](https://localhost:9200) + +- Accept the self-signed certificate (it is regenerated every time the server starts) + +- Login using one of the demo accounts: + + ```console + einstein:relativity + marie:radioactivity + richard:superfluidity + ``` ## Running single extensions @@ -82,5 +88,5 @@ Apache-2.0 ## Copyright ```console -Copyright (c) 2019 ownCloud GmbH +Copyright (c) 2020 ownCloud GmbH ``` diff --git a/changelog/unreleased/add-eos.md b/changelog/unreleased/add-eos.md new file mode 100644 index 000000000..4c14862cb --- /dev/null +++ b/changelog/unreleased/add-eos.md @@ -0,0 +1,5 @@ +Enhancement: Document how to run OCIS on top of EOS + +We have added rules to the Makefile that use the official [eos docker images](https://gitlab.cern.ch/eos/eos-docker) to boot an eos cluster and configure OCIS to use it. + +https://github.com/owncloud/ocis/pull/172 \ No newline at end of file diff --git a/changelog/unreleased/import.md b/changelog/unreleased/import.md new file mode 100644 index 000000000..79ba69903 --- /dev/null +++ b/changelog/unreleased/import.md @@ -0,0 +1,4 @@ +Change: Integrate import command from ocis-migration + +https://github.com/owncloud/ocis/pull/249 +https://github.com/owncloud/ocis-migration diff --git a/changelog/unreleased/integrate-accounts.md b/changelog/unreleased/integrate-accounts.md new file mode 100644 index 000000000..b09c4e892 --- /dev/null +++ b/changelog/unreleased/integrate-accounts.md @@ -0,0 +1,6 @@ +Change: Start ocis-accounts with the ocis server command + +Starts ocis-accounts in single binary mode (./ocis server). This service stores the user-account information. + +https://github.com/owncloud/product/issues/25 +https://github.com/owncloud/ocis/pull/239/files diff --git a/changelog/unreleased/update-extensions-01_04_2020.md b/changelog/unreleased/update-extensions-01_04_2020.md new file mode 100644 index 000000000..e4877c918 --- /dev/null +++ b/changelog/unreleased/update-extensions-01_04_2020.md @@ -0,0 +1,11 @@ +Enhancement: Update extensions + +We've updated various extensions to a tagged release: +- ocis-phoenix v0.4.0 (phoenix v0.7.0) +- ocis-pkg v2.2.0 +- ocis-proxy v0.3.1 +- ocis-reva v0.1.1 +- ocis-thumbnails v0.1.0 +- ocis-webdav v0.1.0 + +https://github.com/owncloud/ocis/pull/180 \ No newline at end of file diff --git a/changelog/unreleased/update-extensions-16_04_2020.md b/changelog/unreleased/update-extensions-16_04_2020.md new file mode 100644 index 000000000..eb121dbeb --- /dev/null +++ b/changelog/unreleased/update-extensions-16_04_2020.md @@ -0,0 +1,8 @@ +Enhancement: Update extensions + +We've updated various extensions: +- ocis-konnectd v0.3.1 +- ocis-phoenix v0.5.0 (phoenix v0.8.0) +- ocis-reva v0.2.0 + +https://github.com/owncloud/ocis/pull/209 \ No newline at end of file diff --git a/changelog/unreleased/updated-extensions.md b/changelog/unreleased/update-extensions-18_03_2020.md.md similarity index 58% rename from changelog/unreleased/updated-extensions.md rename to changelog/unreleased/update-extensions-18_03_2020.md.md index e0f2855b4..9b31cb7e1 100644 --- a/changelog/unreleased/updated-extensions.md +++ b/changelog/unreleased/update-extensions-18_03_2020.md.md @@ -5,8 +5,7 @@ We've updated various extensions to a tagged release: - ocis-glauth v0.4.0 - ocis-phoenix v0.3.0 (phoenix v0.6.0) - ocis-pkg v2.1.0 -- ocis-proxy -v0.1.0 - -We also updated ocis-reva to a PR commit that brings the latest reva to ocis. Work on the PR is ongoing because some acceptance tests fail. +- ocis-proxy v0.1.0 +- ocis-reva v0.1.0 https://github.com/owncloud/ocis/pull/151 diff --git a/changelog/unreleased/update-extensions-25_05_2020.md b/changelog/unreleased/update-extensions-25_05_2020.md new file mode 100644 index 000000000..6501e54e4 --- /dev/null +++ b/changelog/unreleased/update-extensions-25_05_2020.md @@ -0,0 +1,7 @@ +Enhancement: Update extensions + +We've updated various extensions: +- ocis-thumbnails v0.1.2 (tag) +- ocis-reva v0.3.0 (tag) + +https://github.com/owncloud/ocis/pull/290 diff --git a/changelog/unreleased/update-extensions-28_04_2020.md b/changelog/unreleased/update-extensions-28_04_2020.md new file mode 100644 index 000000000..598da0328 --- /dev/null +++ b/changelog/unreleased/update-extensions-28_04_2020.md @@ -0,0 +1,10 @@ +Enhancement: Update extensions + +We've updated various extensions: +- ocis-konnectd v0.3.1 +- ocis-phoenix v0.6.0 +- ocis-reva v0.2.1 +- ocis-pkg v2.2.1 +- ocis-thumbnails v0.1.2 + +https://github.com/owncloud/ocis/pull/209 diff --git a/changelog/unreleased/update-proxy.md b/changelog/unreleased/update-proxy.md new file mode 100644 index 000000000..8bcfda755 --- /dev/null +++ b/changelog/unreleased/update-proxy.md @@ -0,0 +1,3 @@ +Enhancement: Update proxy to v0.2.0 + +https://github.com/owncloud/ocis/pull/167 diff --git a/docs/_index.md b/docs/_index.md index 8f712e87d..bafdc6e27 100644 --- a/docs/_index.md +++ b/docs/_index.md @@ -8,3 +8,23 @@ geekdocFilePath: _index.md --- This tool provides a single entrypoint for the whole ownCloud Infinite Scale stack. + +{{< mermaid class="text-center">}} +graph TD +ocis-proxy --> + ocis-konnectd & ocis-phoenix & ocis-thumbnails & ocis-ocs & ocis-webdav + +ocis-phoenix --> ocis-reva-fronted +ocis-reva-fronted --> ocis-reva-gateway +ocis-konnectd --> ocis-glauth + + +ocis-reva-gateway --> ocis-reva-users +ocis-reva-gateway --> ocis-reva-authbasic +ocis-reva-gateway --> ocis-reva-auth-bearer + +ocis-reva-gateway --> ocis-reva-sharing +ocis-reva-gateway --> ocis-reva-storage-home-* +ocis-reva-storage-home-* --> ocis-reva-storage-home-*-data +ocis-reva-sharing --> redis +{{< /mermaid >}} diff --git a/docs/basic-remote-setup.md b/docs/basic-remote-setup.md new file mode 100644 index 000000000..f067fc53c --- /dev/null +++ b/docs/basic-remote-setup.md @@ -0,0 +1,97 @@ +--- +title: "Basic Remote Setup" +date: 2020-02-27T20:35:00+01:00 +weight: 16 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs +geekdocFilePath: basic-remote-setup.md +--- + +{{< toc >}} + +Out of the box the ocis single binary and the `owncloud/ocis` docker image are configured to run on localhost for quick testing and development. + +If you need to access ocis on a VM or a remote machine e.g when testing a mobile client you need to configure ocis to run on a different host. + +## Use the binary + +If you start the ocis fullstack for the first time with `./bin/ocis server` it will generate a file `identifier-registration.yml` in the config folder relative to its location. This file is used to configure the clients for the built-in Identity Provider. + +{{< hint warning >}} +**Outdated version**\ +This file `identifier-registration.yml` will only be generated if there is no such file in place. You could miss updates on this file. +{{< /hint >}} + +### Add your hostname to the idp config + +Let us assume `your-host` is your remote domain name or IP adress. In this example we do not change the default port (`9200`). But this could be changed to another port. + +```yaml {linenos=table,hl_lines=["13-14",18]} +# OpenID Connect client registry. +clients: + - id: phoenix + name: ownCloud web app + application_type: web + insecure: yes + trusted: yes + redirect_uris: + - http://localhost:9100/oidc-callback.html + - http://localhost:9100/ + - https://localhost:9200/ + - https://localhost:9200/oidc-callback.html + - https://your-host:9200/ + - https://your-host:9200/oidc-callback.html + origins: + - http://localhost:9100 + - https://localhost:9200 + - https://your-host:9200/ +``` + +### Start the ocis fullstack server + +You need to configure `your-host` in some services to provide the needed public resources. oCIS currently needs a running Redis Server reachable locally on the machine at the default port (`localhost:6379`). You can change this using the following option `REVA_STORAGE_OWNCLOUD_REDIS_ADDR=some-host:6379`. + +```bash +PROXY_HTTP_ADDR=0.0.0.0:9200 \ +KONNECTD_ISS=https://your-host:9200 \ +REVA_OIDC_ISSUER=https://your-host:9200 \ +PHOENIX_OIDC_AUTHORITY=https://your-host:9200 \ +PHOENIX_WEB_CONFIG_SERVER=https://your-host:9200 \ +PHOENIX_OIDC_METADATA_URL=https://your-host:9200/.well-known/openid-configuration \ +PROXY_TRANSPORT_TLS_KEY=./certs/your-host.key \ +PROXY_TRANSPORT_TLS_CERT=./certs/your-host.crt \ +KONNECTD_TLS=0 \ +./bin/ocis server +``` + +For more configuration options check the configuration secion in [ocis](https://owncloud.github.io/ocis/configuration/) and every ocis extension. + +{{< hint info >}} +**TlS Certificate**\ +In this example, we are replacing the default self signed cert with a CA signed one to avoid the certificate warning when accessing the login page. +{{< /hint >}} + +## Use Docker Compose + +We are using our [docker compose playground](https://github.com/owncloud-docker/compose-playground) as a repository to share snippets that make our test setups easier and more aligned. + +You can start oCIS with docker very easily on a different host using this snippet. + +Let us assume your local IP is `192.168.103.195` + +```bash +git clone https://github.com/owncloud-docker/compose-playground.git +cd compose-playground/ocis + +sed -i -e 's/your-url/192.168.103.195/g' config/identifier-registration.yml + +cat << EOF > .env +OCIS_BASE_URL=192.168.103.195 +OCIS_HTTP_PORT=9200 +OCIS_DOCKER_TAG=latest +EOF + +docker-compose -f ocis.yml -f ../cache/redis-ocis.yml up -d + +curl -k https://192.168.103.195:9200/status.php +``` diff --git a/docs/bridge.md b/docs/bridge.md index e407873e9..7e14da4d2 100644 --- a/docs/bridge.md +++ b/docs/bridge.md @@ -72,12 +72,10 @@ In an `ocis` folder ``` $ git clone git@github.com:owncloud/ocis-glauth.git $ cd ocis-glauth -$ git checkout start-glauth $ make ``` This should give you a `bin/ocis-glauth` binary. Try listing the help with `bin/ocis-glauth --help`. -TODO merge glauth PR https://github.com/owncloud/ocis-glauth/pull/1 #### Run it! diff --git a/docs/building.md b/docs/building.md index 319516066..29e67ac29 100644 --- a/docs/building.md +++ b/docs/building.md @@ -14,11 +14,23 @@ git clone https://github.com/owncloud/ocis.git cd ocis {{< / highlight >}} -All required tool besides Go itself and make are bundled or getting automatically installed within the `GOPATH`. All commands to build this project are part of our `Makefile`. +All required tools besides Go itself and make are bundled or getting automatically installed within the `GOPATH`. All commands to build this project are part of our `Makefile`. To build the `ocis` binary run: -## Simple Ocis +{{< highlight txt >}} +make generate +make build +{{< / highlight >}} -Building the simple ocis binary: +Finally, you should have the binary within the `bin/` folder now, give it a try with `./bin/ocis -h` to see all available options. + + +## Simple Ocis fo extonsions example + +Currently, we are using a go build tag to allow building a more simple set of the binary. It was intended to let extension developers focus on only the necessary services. + +{{< hint info >}} +While it the tag based simple build demonstrates how to use ocis as a framework for a micro service architecture, we may change to an approach that uses an explicit command to run only a subset of the services. +{{< / hint >}} ```console TAGS=simple make build @@ -28,20 +40,10 @@ The artifact lives in `/bin/ocis` The generated simple ocis binary is a subset of the ocis command with a restricted set of services meant for ease up development. The services included are - ``` ocis-hello -phoenix -konnectd -devldap +ocis-phoenix +ocis-konnectd +ocis-glauth micro's own services ``` - -## Backend - -{{< highlight txt >}} -make generate -make build -{{< / highlight >}} - -Finally you should have the binary within the `bin/` folder now, give it a try with `./bin/ocis -h` to see all available options. diff --git a/docs/configuration.md b/docs/configuration.md index 6cc7a97e5..490f9dfab 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,6 +1,6 @@ --- title: "Configuration" -date: 2020-02-27T20:35:00+01:00 +date: "2020-04-29T12:08:23+0200" weight: 20 geekdocRepo: https://github.com/owncloud/ocis geekdocEditPath: edit/master/docs @@ -13,6 +13,8 @@ geekdocFilePath: configuration.md oCIS Single Binary is not responsible for configuring extensions. Instead, each extension could either be configured by environment variables, cli flags or config files. +Each extension has its dedicated documentation page (e.g. https://owncloud.github.io/extensions/ocis_proxy/configuration) which lists all possible configurations. Config files and environment variables are picked up if you use the `./bin/ocis server` command within the oCIS single binary. Command line flags must be set explicitly on the extensions subcommands. + ### Configuration using config files Out of the box extensions will attempt to read configuration details from: @@ -25,254 +27,180 @@ $HOME/.ocis For this configuration to be picked up, have a look at your extension `root` command and look for which default config name it has assigned. *i.e: ocis-proxy reads `proxy.json | yaml | toml ...`*. +So far we support the file formats `JSON` and `YAML`, if you want to get a full example configuration just take a look at [our repository](https://github.com/owncloud/ocis/tree/master/config), there you can always see the latest configuration format. These example configurations include all available options and the default values. The configuration file will be automatically loaded if it's placed at `/etc/ocis/ocis.yml`, `${HOME}/.ocis/ocis.yml` or `$(pwd)/config/ocis.yml`. + ### Envrionment variables If you prefer to configure the service with environment variables you can see the available variables below. -#### Global - -OCIS_CONFIG_FILE -: Path to config file - -OCIS_LOG_LEVEL -: Set logging level, defaults to `info` - -OCIS_LOG_COLOR -: Enable colored logging, defaults to `true` - -OCIS_LOG_PRETTY -: Enable pretty logging, defaults to `true` - -#### Server - -OCIS_TRACING_ENABLED -: Enable sending traces - -OCIS_TRACING_TYPE -: Tracing backend type, - -OCIS_TRACING_ENDPOINT -:Endpoint for the agent - -OCIS_TRACING_COLLECTOR -: Endpoint for the collector - -OCIS_TRACING_SERVICE -: Service name for tracing" - -OCIS_DEBUG_ADDR -: Address to bind debug server, defaults to `0.0.0.0:9010` - -OCIS_DEBUG_TOKEN -: Token to grant metrics access, empty default value - -OCIS_DEBUG_PPROF -: Enable pprof debugging, defaults to `false` - -OCIS_DEBUG_ZPAGES -: Enable zpages debugging, defaults to `false` - -OCIS_HTTP_ADDR -: Address to bind http server, defaults to `0.0.0.0:9000` - -OCIS_HTTP_ROOT -: Root path for http endpoint, defaults to `/` - -OCIS_GRPC_ADDR -: Address to bind grpc server, defaults to `0.0.0.0:9001` - -OCIS_SERVICES_ENABLED -: List of enabled services, defaults to `phoenix,konnectd,graph,ocs,webdav,hello` - -#### Health - -OCIS_DEBUG_ADDR -: Address to debug endpoint, defaults to `0.0.0.0:9010` - ### Commandline flags -If you prefer to configure the service with commandline flags you can see the available variables below. +If you prefer to configure the service with commandline flags you can see the available variables below. Command line flags are only working when calling the subcommand directly. -#### Global +## Root Command ---config-file -: Path to config file +ownCloud Infinite Scale Stack ---log-level -: Set logging level, defaults to `info` +Usage: `ocis [global options] command [command options] [arguments...]` ---log-color -: Enable colored logging, defaults to `true` +--config-file | $OCIS_CONFIG_FILE +: Path to config file. ---log-pretty -: Enable pretty logging, defaults to `true` +--log-level | $OCIS_LOG_LEVEL +: Set logging level. Default: `info`. -#### Server +--log-pretty | $OCIS_LOG_PRETTY +: Enable pretty logging. Default: `true`. ---tracing-enabled -: Enable sending traces +--log-color | $OCIS_LOG_COLOR +: Enable colored logging. Default: `true`. ---tracing-type -: Tracing backend type, +## Sub Commands ---tracing-endpoint -:Endpoint for the agent +### ocis health ---tracing-collector -: Endpoint for the collector +Check health status ---tracing-service -: Service name for tracing" +Usage: `ocis health [command options] [arguments...]` ---debug-addr -: Address to bind debug server, defaults to `0.0.0.0:9010` +--debug-addr | $OCIS_DEBUG_ADDR +: Address to debug endpoint. Default: `0.0.0.0:9010`. ---debug-token -: Token to grant metrics access, empty default value +### ocis server ---debug-pprof -: Enable pprof debugging, defaults to `false` +Start fullstack server ---debug-zpages -: Enable zpages debugging, defaults to `false` +Usage: `ocis server [command options] [arguments...]` ---http-addr -: Address to bind http server, defaults to `0.0.0.0:9000` +--tracing-enabled | $OCIS_TRACING_ENABLED +: Enable sending traces. ---http-root -: Root path for http endpoint, defaults to `/` +--tracing-type | $OCIS_TRACING_TYPE +: Tracing backend type. Default: `jaeger`. ---grpc-addr -: Address to bind grpc server, defaults to `0.0.0.0:9001` +--tracing-endpoint | $OCIS_TRACING_ENDPOINT +: Endpoint for the agent. ---services-enabled -: List of enabled services, defaults to `hello,phoenix,graph,graph-explorer,ocs,webdav,reva-frontend,reva-gateway,reva-users,reva-auth-basic,reva-auth-bearer,reva-sharing,reva-storage-root,reva-storage-home,reva-storage-home-data,reva-storage-oc,reva-storage-oc-data,devldap` +--tracing-collector | $OCIS_TRACING_COLLECTOR +: Endpoint for the collector. -#### Health +--tracing-service | $OCIS_TRACING_SERVICE +: Service name for tracing. Default: `ocis`. ---debug-addr -: Address to debug endpoint, defaults to `0.0.0.0:9010` +--debug-addr | $OCIS_DEBUG_ADDR +: Address to bind debug server. Default: `0.0.0.0:9010`. -### Configuration file +--debug-token | $OCIS_DEBUG_TOKEN +: Token to grant metrics access. -So far we support the file formats `JSON` and `YAML`, if you want to get a full example configuration just take a look at [our repository](https://github.com/owncloud/ocis/tree/master/config), there you can always see the latest configuration format. These example configurations include all available options and the default values. The configuration file will be automatically loaded if it's placed at `/etc/ocis/ocis.yml`, `${HOME}/.ocis/ocis.yml` or `$(pwd)/config/ocis.yml`. +--debug-pprof | $OCIS_DEBUG_PPROF +: Enable pprof debugging. -## Usage +--debug-zpages | $OCIS_DEBUG_ZPAGES +: Enable zpages debugging. -The program provides a few sub-commands on execution. The available configuration methods have already been mentioned above. Generally you can always see a formated help output if you execute the binary via `ocis --help`. +--http-addr | $OCIS_HTTP_ADDR +: Address to bind http server. Default: `0.0.0.0:9000`. -### Server +--http-root | $OCIS_HTTP_ROOT +: Root path of http server. Default: `/`. -The server command is used to start the http and debug server on two addresses within a single process. The http server is serving the general webservice while the debug server is used for health check, readiness check and to server the metrics mentioned below. For further help please execute: +--grpc-addr | $OCIS_GRPC_ADDR +: Address to bind grpc server. Default: `0.0.0.0:9001`. -{{< highlight txt >}} -ocis server --help -{{< / highlight >}} +### List of available Extension subcommands -### Health +There are more subcommands to start the individual extensions. Please check the documentation about their usage and options in the dedicated section of the documentation. -The health command is used to execute a health check, if the exit code equals zero the service should be up and running, if the exist code is greater than zero the service is not in a healthy state. Generally this command is used within our Docker containers, it could also be used within Kubernetes. +#### ocis graph -{{< highlight txt >}} -ocis health --help -{{< / highlight >}} +Start graph server -## Metrics +#### ocis graph-explorer -This service provides some [Prometheus](https://prometheus.io/) metrics through the debug endpoint, you can optionally secure the metrics endpoint by some random token, which got to be configured through one of the flag `--debug-token` or the environment variable `OCIS_DEBUG_TOKEN` mentioned above. By default the metrics endpoint is bound to `http://0.0.0.0:8001/metrics`. +Start graph explorer -go_gc_duration_seconds -: A summary of the GC invocation durations +#### ocis phoenix -go_gc_duration_seconds_sum -: A summary of the GC invocation durations +Start phoenix server -go_gc_duration_seconds_count -: A summary of the GC invocation durations +#### ocis reva-storage-oc-data -go_goroutines -: Number of goroutines that currently exist +Start reva oc storage dataprovider -go_info -: Information about the Go environment +#### ocis reva-auth-basic -go_memstats_alloc_bytes -: Number of bytes allocated and still in use +Start reva auth-basic service -go_memstats_alloc_bytes_total -: Total number of bytes allocated, even if freed +#### ocis glauth -go_memstats_buck_hash_sys_bytes -: Number of bytes used by the profiling bucket hash table +Start glauth server -go_memstats_frees_total -: Total number of frees +#### ocis reva-storage-eos-data -go_memstats_gc_cpu_fraction -: The fraction of this program's available CPU time used by the GC since the program started +Start reva eos storage dataprovider -go_memstats_gc_sys_bytes -: Number of bytes used for garbage collection system metadata +#### ocis hello -go_memstats_heap_alloc_bytes -: Number of heap bytes allocated and still in use +Start hello server -go_memstats_heap_idle_bytes -: Number of heap bytes waiting to be used +#### ocis ocs -go_memstats_heap_inuse_bytes -: Number of heap bytes that are in use +Start ocs server -go_memstats_heap_objects -: Number of allocated objects +#### ocis reva-storage-eos -go_memstats_heap_released_bytes -: Number of heap bytes released to OS +Start reva eos storage -go_memstats_heap_sys_bytes -: Number of heap bytes obtained from system +#### ocis reva-storage-root -go_memstats_last_gc_time_seconds -: Number of seconds since 1970 of last garbage collection +Start reva root storage -go_memstats_lookups_total -: Total number of pointer lookups +#### ocis reva-auth-bearer -go_memstats_mallocs_total -: Total number of mallocs +Start reva auth-bearer service -go_memstats_mcache_inuse_bytes -: Number of bytes in use by mcache structures +#### ocis webdav -go_memstats_mcache_sys_bytes -: Number of bytes used for mcache structures obtained from system +Start webdav server -go_memstats_mspan_inuse_bytes -: Number of bytes in use by mspan structures +#### ocis reva-gateway -go_memstats_mspan_sys_bytes -: Number of bytes used for mspan structures obtained from system +Start reva gateway -go_memstats_next_gc_bytes -: Number of heap bytes when next garbage collection will take place +#### ocis reva-frontend -go_memstats_other_sys_bytes -: Number of bytes used for other system allocations +Start reva frontend -go_memstats_stack_inuse_bytes -: Number of bytes in use by the stack allocator +#### ocis reva-storage-home-data -go_memstats_stack_sys_bytes -: Number of bytes obtained from system for stack allocator +Start reva home storage dataprovider -go_memstats_sys_bytes -: Number of bytes obtained from system +#### ocis konnectd -go_threads -: Number of OS threads created +Start konnectd server -promhttp_metric_handler_requests_in_flight -: Current number of scrapes being served +#### ocis reva-users + +Start reva users service + +#### ocis proxy + +Start proxy server + +#### ocis reva-sharing + +Start reva sharing service + +#### ocis reva-storage-home + +Start reva home storage + +#### ocis reva-storage-oc + +Start reva oc storage + +#### ocis thumbnails + +Start thumbnails server -promhttp_metric_handler_requests_total -: Total number of scrapes by HTTP status code diff --git a/docs/debugging.md b/docs/debugging.md new file mode 100644 index 000000000..4e443aa27 --- /dev/null +++ b/docs/debugging.md @@ -0,0 +1,217 @@ +--- +title: "Debugging" +date: 2020-03-19T08:21:00+01:00 +weight: 50 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs +geekdocFilePath: debugging.md +--- + +## Debugging + +As a single binary for easy deployment running `ocis server` just forks itself to start all the services, which makes debugging those processes a little harder. + +Ultimately, we want to be able to stop a single service using eg. `ocis kill phoenix` so that you can start the service you want to debug in debug mode. We need to [change the way we fork processes](https://github.com/owncloud/ocis/issues/77) though, otherwise the runtime will automatically restart a service if killed. + +### Start ocis + +For debugging there are two workflows that work well, depending on your preferences. + +#### Use the debug binary and attach to the process as needed + +Run the debug binary with `OCIS_LOG_LEVEL=debug bin/ocis-debug server` and then find the service you want to debug using: + +```console +# ps ax | grep ocis +12837 pts/1 Sl+ 0:00 bin/ocis-debug server +12845 pts/1 Sl 0:00 bin/ocis-debug graph +12847 pts/1 Sl 0:00 bin/ocis-debug reva-auth-bearer +12848 pts/1 Sl 0:00 bin/ocis-debug graph-explorer +12849 pts/1 Sl 0:00 bin/ocis-debug ocs +12850 pts/1 Sl 0:00 bin/ocis-debug reva-storage-oc-data +12863 pts/1 Sl 0:00 bin/ocis-debug webdav +12874 pts/1 Sl 0:00 bin/ocis-debug reva-frontend +12897 pts/1 Sl 0:00 bin/ocis-debug reva-sharing +12905 pts/1 Sl 0:00 bin/ocis-debug reva-gateway +12912 pts/1 Sl 0:00 bin/ocis-debug reva-storage-home +12920 pts/1 Sl 0:00 bin/ocis-debug reva-users +12929 pts/1 Sl 0:00 bin/ocis-debug glauth +12940 pts/1 Sl 0:00 bin/ocis-debug reva-storage-home-data +12948 pts/1 Sl 0:00 bin/ocis-debug konnectd +12952 pts/1 Sl 0:00 bin/ocis-debug proxy +12961 pts/1 Sl 0:00 bin/ocis-debug thumbnails +12971 pts/1 Sl 0:00 bin/ocis-debug reva-storage-oc +12981 pts/1 Sl 0:00 bin/ocis-debug web +12993 pts/1 Sl 0:00 bin/ocis-debug api +12998 pts/1 Sl 0:00 bin/ocis-debug registry +13004 pts/1 Sl 0:00 bin/ocis-debug phoenix +13015 pts/1 Sl 0:00 bin/ocis-debug reva-auth-basic +``` + +Then you can set a breakpoint in the service you need and attach to the process via processid. To debug the `reva-sharing` service the VS Code `launch.json` would look like this: + +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "ocis attach", + "type": "go", + "request": "attach", + "mode": "local", + "processId": 12897, + } + ] +} +``` + +#### Start all services independently to replace one of them with a debug process + +1. You can use this `./ocis.sh` script to start all services independently, so they don't get restrarted by the runtime when you kill them: +```bash +#/bin/sh +LOG_LEVEL="debug" + +bin/ocis --log-level=$LOG_LEVEL micro & + +bin/ocis --log-level=$LOG_LEVEL glauth & +bin/ocis --log-level=$LOG_LEVEL graph-explorer & +bin/ocis --log-level=$LOG_LEVEL graph & +#bin/ocis --log-level=$LOG_LEVEL hello & +bin/ocis --log-level=$LOG_LEVEL konnectd & +#bin/ocis --log-level=$LOG_LEVEL ocs & +bin/ocis --log-level=$LOG_LEVEL phoenix & +bin/ocis --log-level=$LOG_LEVEL reva-auth-basic & +bin/ocis --log-level=$LOG_LEVEL reva-auth-bearer & +bin/ocis --log-level=$LOG_LEVEL reva-frontend & +bin/ocis --log-level=$LOG_LEVEL reva-gateway & +bin/ocis --log-level=$LOG_LEVEL reva-sharing & +bin/ocis --log-level=$LOG_LEVEL reva-storage-home & +bin/ocis --log-level=$LOG_LEVEL reva-storage-home-data & +bin/ocis --log-level=$LOG_LEVEL reva-storage-oc & +bin/ocis --log-level=$LOG_LEVEL reva-storage-oc-data & +bin/ocis --log-level=$LOG_LEVEL reva-storage-root & +bin/ocis --log-level=$LOG_LEVEL reva-users & +#bin/ocis --log-level=$LOG_LEVEL webdav + +bin/ocis --log-level=$LOG_LEVEL proxy & +``` + +2. Get the list of running processes: + +```console +# ps ax | grep ocis +12837 pts/1 Sl+ 0:00 bin/ocis-debug server +12845 pts/1 Sl 0:00 bin/ocis-debug graph +12847 pts/1 Sl 0:00 bin/ocis-debug reva-auth-bearer +12848 pts/1 Sl 0:00 bin/ocis-debug graph-explorer +12849 pts/1 Sl 0:00 bin/ocis-debug ocs +12850 pts/1 Sl 0:00 bin/ocis-debug reva-storage-oc-data +12863 pts/1 Sl 0:00 bin/ocis-debug webdav +12874 pts/1 Sl 0:00 bin/ocis-debug reva-frontend +12897 pts/1 Sl 0:00 bin/ocis-debug reva-sharing +12905 pts/1 Sl 0:00 bin/ocis-debug reva-gateway +12912 pts/1 Sl 0:00 bin/ocis-debug reva-storage-home +12920 pts/1 Sl 0:00 bin/ocis-debug reva-users +12929 pts/1 Sl 0:00 bin/ocis-debug glauth +12940 pts/1 Sl 0:00 bin/ocis-debug reva-storage-home-data +12948 pts/1 Sl 0:00 bin/ocis-debug konnectd +12952 pts/1 Sl 0:00 bin/ocis-debug proxy +12961 pts/1 Sl 0:00 bin/ocis-debug thumbnails +12971 pts/1 Sl 0:00 bin/ocis-debug reva-storage-oc +12981 pts/1 Sl 0:00 bin/ocis-debug web +12993 pts/1 Sl 0:00 bin/ocis-debug api +12998 pts/1 Sl 0:00 bin/ocis-debug registry +13004 pts/1 Sl 0:00 bin/ocis-debug phoenix +13015 pts/1 Sl 0:00 bin/ocis-debug reva-auth-basic +``` + +3. Kill the service you want to start in debug mode: + + +```console +# kill 17628 +``` + +4. Start the service you are interested in in debug mode. When using make to build the binary there is already a `bin/ocis-debug` binary for you. When running an IDE tell it which service to start by providing the corresponding sub command, eg. `bin\ocis-debug reva-frontend`. + +### Gather error messages + +We recommend you collect all related information in a single file or in a github issue. Let us start with an error that pops up in the Web UI: + +> Error while sharing. +> error sending a grpc stat request + +This popped up when I tried to add `marie` as a collaborator in phoenix. That triggers a request to the server which I copied as curl. We can strip a lot of headers and the gist of it is: + +```console +# curl 'https://localhost:9200/ocs/v1.php/apps/files_sharing/api/v1/shares' -d 'shareType=0&shareWith=marie&path=%2FNeuer+Ordner&permissions=1' -u einstein:relativity -k -v | xmllint -format - +[... headers ...] + + + + error + 998 + error sending a grpc stat request + + +``` + +{{< hint info >}} +The username and password only work when basic auth is available. Otherwise you have to obtain a bearer token, eg. by grabbing it from the browser. +{{< /hint >}} +{{< hint danger >}} +TODO add ocis cli tool to obtain a bearer token. +{{< /hint >}} + +We also have a few interesting log entries: + +``` +0:43PM INF home/jfd/go/pkg/mod/github.com/cs3org/reva@v0.0.2-0.20200318111623-a2f97d4aa741/internal/grpc/interceptors/log/log.go:69 > unary code=OK end="18/Mar/2020:22:43:40 +0100" from=tcp://[::1]:44078 pid=17836 pkg=rgrpc start="18/Mar/2020:22:43:40 +0100" time_ns=95841 traceid=b4eb9a9f45921f7d3632523ca32a42b0 uri=/cs3.storage.registry.v1beta1.RegistryAPI/GetStorageProvider user-agent=grpc-go/1.26.0 +10:43PM ERR home/jfd/go/pkg/mod/github.com/cs3org/reva@v0.0.2-0.20200318111623-a2f97d4aa741/internal/grpc/interceptors/log/log.go:69 > unary code=Unknown end="18/Mar/2020:22:43:40 +0100" from=tcp://[::1]:43910 pid=17836 pkg=rgrpc start="18/Mar/2020:22:43:40 +0100" time_ns=586115 traceid=b4eb9a9f45921f7d3632523ca32a42b0 uri=/cs3.gateway.v1beta1.GatewayAPI/Stat user-agent=grpc-go/1.26.0 +10:43PM ERR home/jfd/go/pkg/mod/github.com/cs3org/reva@v0.0.2-0.20200318111623-a2f97d4aa741/internal/http/services/owncloud/ocs/reqres.go:94 > error sending a grpc stat request error="rpc error: code = Unknown desc = gateway: error calling Stat: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial tcp [::1]:9152: connect: connection refused\"" pid=17832 pkg=rhttp traceid=b4eb9a9f45921f7d3632523ca32a42b0 +``` + +{{< hint danger >}} +TODO return the trace id in the response so we can correlate easier. For reva tracked in https://github.com/cs3org/reva/issues/587 +{{< /hint >}} + +The last line gives us a hint where the log message originated: `.../github.com/cs3org/reva@v0.0.2-0.20200318111623-a2f97d4aa741/internal/http/services/owncloud/ocs/reqres.go:94`. Which looks like this: + +```go +89: // WriteOCSResponse handles writing ocs responses in json and xml +90: func WriteOCSResponse(w http.ResponseWriter, r *http.Request, res *Response, err error) { +91: var encoded []byte +92: +93: if err != nil { +94: appctx.GetLogger(r.Context()).Error().Err(err).Msg(res.OCS.Meta.Message) +95: } +``` + +Ok, so this seems to be a convenience method that is called from multiple places an also handles errors. Unfortunately, this hides the actual source of the error. We could set a breakpoint in line 94 and reproduce the problem, which can be a lot harder than just clicking the share button or sending a curl request again. So let us see what else the log tells us. + +The previous line tells us that a Stat request failed: `uri=/cs3.gateway.v1beta1.GatewayAPI/Stat`. This time the line is written by the grpc log interceptor. What else is there? + +The first line tells us that looking up the responsible storage provider seems to have succeeded: `uri=/cs3.storage.registry.v1beta1.RegistryAPI/GetStorageProvider`. + +At this point it your familiarity with the codebase starts to become a factor. If you are new you should probably go back to setting a break point on the log line and check the stack trace. + +Debug wherever the call trace leads you to ... good luck! + +### Managing dependencies and testing changes + +You can either run and manage the services independently, or you can update the `go.mod` file and replace dependencies with your local version. + +To debug the reva frontend we need to add two replacements: +``` +// use the local ocis-reva repo +replace github.com/owncloud/ocis-reva => ../ocis-reva +// also use the local reva repo +replace github.com/cs3org/reva => ../reva +``` +{{< hint info >}} +The username and password only work when basic auth is available. Otherwise you have to obtain a bearer token, eg. by grabbing it from the browser. +{{< /hint >}} + +Rebuild ocis to make sure the dependency is used. It should be sufficient to just restart the service you want to debug. + diff --git a/docs/eos.md b/docs/eos.md new file mode 100644 index 000000000..873674408 --- /dev/null +++ b/docs/eos.md @@ -0,0 +1,77 @@ +--- +title: "EOS" +date: 2020-02-27T20:35:00+01:00 +weight: 30 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs +geekdocFilePath: eos.md +--- + +{{< toc >}} + +OCIS can be configured to run on top of [eos](https://eos.web.cern.ch/). While the [eos documentation](http://eos-docs.web.cern.ch/) does cover a lot of topics it leaves out some details that you may have to either pull from various [docker containers](https://gitlab.cern.ch/eos/eos-docker), the [forums](https://eos-community.web.cern.ch/) or even the [source](https://github.com/cern-eos/eos) itself. + +This document is a work in progress of the current setup. + +## Current status + +Using ocis and eos it is possible today to manage folders. Sharing is [heavily](https://github.com/cs3org/reva/pull/523) [under](https://github.com/cs3org/reva/pull/585) [development](https://github.com/cs3org/reva/pull/482). File up and download needs proper configuration of the dataprovider to also use eos. + +## How to do it + +### Grab it! + +``` +$ git clone git@github.com:owncloud/ocis.git +$ cd ocis +``` + + +### Run it! + +Preconditions +* `go` (from golang.org/dl) and `gcc` (via e.g. `apt install build-essential`) are installed +* No eos components are running. If in doubt, begin with `make eos-stop` + +We poured the nitty gritty details of setting up ocis into Makefile targets. After running + +``` +$ make eos-start +``` + +the eos related docker containers will be created, started and setup to authenticate against the ocis-glauth service. + +It will also copy the ocis binary to the `eos-cli1` container and start `ocis reva-storage-home` with the necessary environment variables to use the eos storage driver. + +For details have a look at the `Makefile`. + + +### Test it! + +You should now be able to point your browser to https://localhost:9200 and login using the demo user credentials, eg `einstein:relativity`. + +{{< hint info >}} +If you encounter an error when the IdP redirects you back to phoenix, just reload the page and it should be gone ... or debug it. PR welcome! +{{< /hint >}} + +Create a folder in the ui. Then check it was created in eos: + +``` +$ docker exec -it eos-mgm1 eos ls -l /eos/dockertest/reva/users/e/einstein +``` + +Now create a new folder in eos (using eos-mgm1 you will be logged in as admin, see the `whoami`, which is why we `chown` the folder to the uid and gid of einstein afterwards): + +``` +$ docker exec -it eos-mgm1 eos whoami +$ docker exec -it eos-mgm1 eos mkdir /eos/dockertest/reva/users/e/einstein/rocks +$ docker exec -it eos-mgm1 eos chown 20000:30000 /eos/dockertest/reva/users/e/einstein/rocks +``` + +Check that the folder exists in the web ui. + +## Next steps + +- configure storage-home-data to enable file upload, PRs against `ocis-reva` welcome +- get sharing implemented, PRs against `reva` welcome +- simplify home logic, see https://github.com/cs3org/reva/issues/601 and https://github.com/cs3org/reva/issues/578 diff --git a/docs/extensions.md b/docs/extensions.md index ddcbecb81..4fd9d2bbe 100644 --- a/docs/extensions.md +++ b/docs/extensions.md @@ -1,5 +1,5 @@ --- -title: "Extensions" +title: "Extension" date: 2020-02-27T20:35:00+01:00 weight: 40 geekdocRepo: https://github.com/owncloud/ocis @@ -169,7 +169,9 @@ This is what hello is: copy and extend! ## Phoenix extension points -> Note: For an up to date list check out [the phoenix documentation](https://github.com/owncloud/phoenix/issues/2423). +{{< hint info >}} +For an up to date list check out [the phoenix documentation](https://github.com/owncloud/phoenix/issues/2423). +{{< /hint >}} Several ones available: diff --git a/docs/getting-started.md b/docs/getting-started.md index 46f942bb4..5c241aa75 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -53,6 +53,26 @@ chmod +x ocis - Running ocis currently needs a working Redis caching server - The default promary storage location is `/var/tmp/reva/data`. You can change that value by configuration. +## Usage + +The program provides a few sub-commands on execution. The available configuration methods have already been mentioned above. Generally you can always see a formated help output if you execute the binary via `ocis --help`. + +### Server + +The server command is used to start the http and debug server on two addresses within a single process. The http server is serving the general webservice while the debug server is used for health check, readiness check and to server the metrics mentioned below. For further help please execute: + +{{< highlight txt >}} +ocis server --help +{{< / highlight >}} + +### Health + +The health command is used to execute a health check, if the exit code equals zero the service should be up and running, if the exist code is greater than zero the service is not in a healthy state. Generally this command is used within our Docker containers, it could also be used within Kubernetes. + +{{< highlight txt >}} +ocis health --help +{{< / highlight >}} + ## Quickstart for Developers Following https://github.com/owncloud/ocis#development @@ -67,8 +87,8 @@ Open https://localhost:9200 and login using one of the demo accounts: ```console einstein:relativity -marie:radioactivty -richard:superfluidity +marie:radioactivity +feynman:superfluidity ``` ## Runtime @@ -107,3 +127,102 @@ com.owncloud.api.hello To the list of available services. +## Metrics + +This service provides some [Prometheus](https://prometheus.io/) metrics through the debug endpoint, you can optionally secure the metrics endpoint by some random token, which got to be configured through one of the flag `--debug-token` or the environment variable `OCIS_DEBUG_TOKEN` mentioned above. By default the metrics endpoint is bound to `http://0.0.0.0:8001/metrics`. + +go_gc_duration_seconds +: A summary of the GC invocation durations + +go_gc_duration_seconds_sum +: A summary of the GC invocation durations + +go_gc_duration_seconds_count +: A summary of the GC invocation durations + +go_goroutines +: Number of goroutines that currently exist + +go_info +: Information about the Go environment + +go_memstats_alloc_bytes +: Number of bytes allocated and still in use + +go_memstats_alloc_bytes_total +: Total number of bytes allocated, even if freed + +go_memstats_buck_hash_sys_bytes +: Number of bytes used by the profiling bucket hash table + +go_memstats_frees_total +: Total number of frees + +go_memstats_gc_cpu_fraction +: The fraction of this program's available CPU time used by the GC since the program started + +go_memstats_gc_sys_bytes +: Number of bytes used for garbage collection system metadata + +go_memstats_heap_alloc_bytes +: Number of heap bytes allocated and still in use + +go_memstats_heap_idle_bytes +: Number of heap bytes waiting to be used + +go_memstats_heap_inuse_bytes +: Number of heap bytes that are in use + +go_memstats_heap_objects +: Number of allocated objects + +go_memstats_heap_released_bytes +: Number of heap bytes released to OS + +go_memstats_heap_sys_bytes +: Number of heap bytes obtained from system + +go_memstats_last_gc_time_seconds +: Number of seconds since 1970 of last garbage collection + +go_memstats_lookups_total +: Total number of pointer lookups + +go_memstats_mallocs_total +: Total number of mallocs + +go_memstats_mcache_inuse_bytes +: Number of bytes in use by mcache structures + +go_memstats_mcache_sys_bytes +: Number of bytes used for mcache structures obtained from system + +go_memstats_mspan_inuse_bytes +: Number of bytes in use by mspan structures + +go_memstats_mspan_sys_bytes +: Number of bytes used for mspan structures obtained from system + +go_memstats_next_gc_bytes +: Number of heap bytes when next garbage collection will take place + +go_memstats_other_sys_bytes +: Number of bytes used for other system allocations + +go_memstats_stack_inuse_bytes +: Number of bytes in use by the stack allocator + +go_memstats_stack_sys_bytes +: Number of bytes obtained from system for stack allocator + +go_memstats_sys_bytes +: Number of bytes obtained from system + +go_threads +: Number of OS threads created + +promhttp_metric_handler_requests_in_flight +: Current number of scrapes being served + +promhttp_metric_handler_requests_total +: Total number of scrapes by HTTP status code \ No newline at end of file diff --git a/docs/login-flow.md b/docs/login-flow.md new file mode 100644 index 000000000..ab450d901 --- /dev/null +++ b/docs/login-flow.md @@ -0,0 +1,85 @@ +--- +title: "Login Flow" +date: 2020-05-04T20:47:00+01:00 +weight: 43 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs +geekdocFilePath: login-flow.md +--- + + +## Login Flow + +The following sequence diagram describes the [openid connect auth code flow](https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth). The eight numbered steps and notes correspond to the [openid connect auth code flow steps](https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowSteps). Example requests are based on the spec as well.: + +{{< mermaid class="text-center">}} +sequenceDiagram + %% we have comments!! \o/ + %% this documents the login workflow + %% examples taken from the oidc spec https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth + %% TODO add PKCE, see https://developer.okta.com/blog/2019/08/22/okta-authjs-pkce#use-pkce-to-make-your-apps-more-secure + participant user as User + participant client as Client + participant proxy as ocis-proxy + participant idp as IdP + participant glauth as ocis-glauth + participant graph as ocis-graph + participant accounts as ocis-accounts + participant ldap as external LDAP server + + user->>+client: What is the content of my home? + + client->>+proxy: PROPFIND
no (or expired) auth + Note over client,proxy: ocis needs to know the IdP that is
used to authenticate users. The
proxy will redirect unauthenticated
requests to that IdP. + proxy-->>-client: 302 Found + Note over client, idp: HTTP/1.1 302 Found
Location: https://server.example.com/authorize?
response_type=code&
scope=openid%20profile%20email
&client_id=s6BhdRkqt3
&state=af0ifjsldkj
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb + + Note over client, idp: We should follow the OpenID Connect Discovery protocol + Note over client, idp: Clients might fall back to the ocis server if the discovery failed.
We can provide a webfinger endpoint there to let guests use an idp
that is backed by the accounts service. + Note over client, idp: For now, clients can only handle one IdP, which is configured in ocis. + + client-->>client: 1. Client prepares an Authentication Request
containing the desired request parameters. + + client->>+idp: 2. Client sends the request to the Authorization Server. + Note over client, idp: GET /authorize?
response_type=code
&scope=openid%20profile%20email
&client_id=s6BhdRkqt3
&state=af0ifjsldkj
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb HTTP/1.1
Host: server.example.com + Note over user, idp: 3. Authorization Server Authenticates the End-User. + Note over idp,ldap: Either an IdP already exists or a new one is introduced. Since we are not yet using oidc discovery we can only use one IdP. + alt all users managed by konnectd/ocis + idp->>+glauth: LDAP query/bind + glauth->>+graph: GET user with Basic Auth
GraphAPI + graph->>+accounts: internal GRPC + accounts-->>-graph: response + graph-->>-glauth: OData response + glauth-->>-idp: LDAP result + Note over accounts,ldap: In case internal users are managed
in an external ldap they have to be
synced to the accounts service to
show up as recipients during sharing. + else all users authenticated by an external idp + idp->>+ldap: LDAP query/bind + ldap-->>-idp: LDAP result + alt guest accounts managed in ocis / lookup using glauth proxy: + Note over idp,glauth: Idp is configured to use glauth as a
second ldap server. + idp->>+glauth: LDAP query/bind + glauth->>+graph: GET user with Basic Auth
GraphAPI + graph->>+accounts: internal GRPC + accounts-->>-graph: response + graph-->>-glauth: OData response + glauth-->>-idp: LDAP result + else guest account provisioned by other means + Note over accounts, ldap: In case guest accounts are managed
in an existing ldap they need to be
synced to the accounts service to
be able to login and show up as
recipients during sharing. + end + end + Note over user, idp: 4. Authorization Server obtains End-User Consent/Authorization. + idp-->>-client: 5. Authorization Server sends the End-User back
to the Client with an Authorization Code. + Note over client, idp: HTTP/1.1 302 Found
Location: https://client.example.org/cb?
code=SplxlOBeZQQYbYS6WxSbIA&state=af0ifjsldkj + + client->>+idp: 6. Client requests a response using the
Authorization Code at the Token Endpoint. + Note over client, idp: POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb + idp-->>-client: 7. Client receives a response that contains an
ID Token and Access Token in the response body. + Note over client, idp: HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"access_token": "SlAV32hkKG",
"token_type": "Bearer",
"refresh_token": "8xLOxBtZp8",
"expires_in": 3600,
"id_token": "a ... b.c ... d.e ... f" // must be a JWT
} + + + client-->>client: 8. Client validates the ID token and
retrieves the End-User's Subject Identifier. + + client->>+proxy: PROPFIND
With access token + proxy-->>-client: 207 Multi-Status + client-->>-user: List of Files X, Y, Z ... +{{< /mermaid >}} \ No newline at end of file diff --git a/docs/request-flow.md b/docs/request-flow.md new file mode 100644 index 000000000..ed2d9a693 --- /dev/null +++ b/docs/request-flow.md @@ -0,0 +1,96 @@ +--- +title: "Request Flow" +date: 2020-04-27T16:07:00+01:00 +weight: 45 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs +geekdocFilePath: request-flow.md +--- + + +## Request Flow + +The following sequence diagram describes the general request flow. It shows where account provisioning and token minting are happening: + +{{< mermaid class="text-center">}} +sequenceDiagram + %% we have comments!! \o/ + participant user as User + participant client as Client + participant proxy as ocis-proxy + participant idp as IdP + participant accounts as ocis-accounts + participant ldap as corporate LDAP server + + user->>+client: What is the content of my home? + + client->>+proxy: PROPFIND
Bearer auth using oidc auth token + Note over client,proxy: What is in a bearer token?
The spec recommends opaque tokens.
Treat it as random byte noise. + Note over client,proxy: the proxy MUST authenticate users
using ocis-accounts because it needs
to decide where to send the request + %% Mention introspection endpoint for opaque tokens + %% konnectd uses jwt, so we can save a request + %% either way the token can be used to look up the sub and iss of the user + + %% or is token check enough? + proxy->>+idp: GET /userinfo + alt userinfo succeeds + + idp-->>proxy: 200 OK + Note over proxy,accounts: Content-Type: application/json
{
"sub": "248289761001",
"name": "Jane Doe",
"given_name": "Jane",
"family_name": "Doe",
"preferred_username": "j.doe",
"email": "janedoe@example.com",
"picture": "http://example.com/janedoe/me.jpg"
} + %% see: https://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse + + else userinfo fails + + idp-->>-proxy: 401 Unauthorized + Note over proxy,accounts: WWW-Authenticate: error="invalid_token",
error_description="The Access Token expired" + + proxy-->>client: 401 Unauthorized or
302 Found with redirect to idp + Note over client: start at login flow
or refresh the token + + end + + proxy->>+accounts: TODO API call to exchange sub@iss with account UUID + Note over proxy,accounts: does not autoprovision users. They are explicitly provsioned later. + + alt account exists or has been migrated + + accounts-->>proxy: existing account UUID + else account does not exist + + opt oc10 endpoint is configured + Note over proxy,oc10: Check if user exists in oc10 + proxy->>+oc10: GET /apps/graphapi/v1.0/users/ + opt user exists in oc10 + oc10-->>-proxy: 200 + %% TODO auth using internal token + proxy->>+oc10: PROPFIND + Note over proxy,oc10: forward existing bearer auth + oc10-->>-proxy: Multistatus response + proxy-->>client: Multistatus response + client-->>user: List of Files X, Y, Z ... + end + end + + Note over proxy,accounts: provision a new account including displayname, email and sub@iss
TODO only if the user is allowed to login, based on group
membership in the ldap server + proxy->>proxy: generate new uuid + proxy->>+accounts: TODO create account with new generated uuid + accounts-->>-proxy: OK / error + + else account has been disabled + + accounts-->>-proxy: account is disabled + proxy-->>client: 401 Unauthorized or
302 Found with redirect to idp + Note over client: start at login flow
or refresh the token + + end + proxy->>proxy: store uuid in context + + %% what if oc10 does not support a certain request / API + + proxy->>proxy: mint an internal jwt that includes the UUID and username using revas `x-access-token` header + proxy->>+reva: PROPFIND
Token auth using internal JWT + reva-->>-proxy: Multistatus response + proxy-->>-client: Multistatus response + + client-->>-user: List of Files X, Y, Z ... +{{< /mermaid >}} \ No newline at end of file diff --git a/docs/testing.md b/docs/testing.md new file mode 100644 index 000000000..6a2ff7b5c --- /dev/null +++ b/docs/testing.md @@ -0,0 +1,146 @@ +--- +title: "Testing" +date: 2018-05-02T00:00:00+00:00 +weight: 37 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs +geekdocFilePath: testing.md +--- + + +## Acceptance tests + +We are using the ownCloud 10 acceptance testsuite against ocis. To set this up you need the owncloud 10 core repo, a ldap server that the acceptance tests can use to manage users, a redis server for file-versions and the ocis code. + +### Getting the tests + +All you need to do to get the acceptance tests is check out the core repo: +``` +git clone https://github.com/owncloud/core.git +``` + +### Run a ldap server in a docker container + +The ownCloud 10 acceptance tests will need write permission. You can start a suitable ldap server in a docker container with: + +``` +docker run --hostname ldap.my-company.com \ + -e LDAP_TLS_VERIFY_CLIENT=never \ + -e LDAP_DOMAIN=owncloud.com \ + -e LDAP_ORGANISATION=ownCloud \ + -e LDAP_ADMIN_PASSWORD=admin \ + --name docker-slapd \ + -p 127.0.0.1:389:389 \ + -p 636:636 -d osixia/openldap +``` +### Run a redis server in a docker container + +File versions need a redis server. Start one with docker by using: + +`docker run -e REDIS_DATABASES=1 -p 6379:6379 -d webhippie/redis:latest` + +### Run ocis with that ldap server + +`ocis` provides multiple subcommands. To configure them all via env vars you can export these environment variables. + +``` +export REVA_USERS_DRIVER=ldap +export REVA_LDAP_HOSTNAME=localhost +export REVA_LDAP_PORT=636 +export REVA_LDAP_BASE_DN='dc=owncloud,dc=com' +export REVA_LDAP_USERFILTER='(&(objectclass=posixAccount)(cn=%s))' +export REVA_LDAP_GROUPFILTER='(&(objectclass=posixGroup)(cn=%s))' +export REVA_LDAP_BIND_DN='cn=admin,dc=owncloud,dc=com' +export REVA_LDAP_BIND_PASSWORD=admin +export REVA_LDAP_SCHEMA_UID=uid +export REVA_LDAP_SCHEMA_MAIL=mail +export REVA_LDAP_SCHEMA_DISPLAYNAME=displayName +export REVA_LDAP_SCHEMA_CN=cn +export LDAP_URI=ldap://localhost +export LDAP_BINDDN='cn=admin,dc=owncloud,dc=com' +export LDAP_BINDPW=admin +export LDAP_BASEDN='dc=owncloud,dc=com' +``` + +Then you need to start ocis +``` +bin/ocis server +``` + +### Run the acceptance tests + +In the ownCloud 10 core repo run + +``` +make test-acceptance-api \ +TEST_SERVER_URL=http://localhost:9140 \ +TEST_EXTERNAL_USER_BACKENDS=true \ +TEST_OCIS=true \ +OCIS_REVA_DATA_ROOT=/var/tmp/reva/ \ +BEHAT_FILTER_TAGS='~@skipOnOcis&&~@skipOnLDAP&&@TestAlsoOnExternalUserBackend&&~@local_storage' +``` + +Make sure to adjust the settings `TEST_SERVER_URL` and `OCIS_REVA_DATA_ROOT` according to your environment + +This will run all tests that can work with LDAP and are not skipped on ocis + +To run a single test add `BEHAT_FEATURE=` + +### use existing tests for BDD + +As a lot of scenarios are written for oC10, we can use those tests for Behaviour driven development in ocis. +Every scenario that does not work in ocis, is tagged with `@skipOnOcis` and additionally should be marked with an issue number e.g. `@issue-ocis-20`. +This tag means that this particular scenario is skipped because of [issue no 20 in the ocis repository](https://github.com/owncloud/ocis/issues/20). +Additionally, some issues have scenarios that demonstrate the current buggy behaviour in ocis(reva) and are skipped on oC10. +Have a look into the [documentation](https://doc.owncloud.com/server/developer_manual/testing/acceptance-tests.html#writing-scenarios-for-bugs) to understand why we are writing those tests. + +If you want to work on a specific issue + +1. run the tests marked with that issue tag + + E.g.: + ``` + make test-acceptance-api \ + TEST_SERVER_URL=http://localhost:9140 \ + TEST_EXTERNAL_USER_BACKENDS=true \ + TEST_OCIS=true \ + OCIS_REVA_DATA_ROOT=/var/tmp/reva/ \ + BEHAT_FILTER_TAGS='~@skipOnOcV10&&~@skipOnLDAP&&@TestAlsoOnExternalUserBackend&&~@local_storage&&@issue-ocis-20' + ``` + + Note that the `~@skipOnOcis` tag is replaced by `~@skipOnOcV10` and the issue tag `@issue-ocis-20` is added. + We want to run all tests that are skipped in CI because of this particular bug, but we don't want to run the tests + that demonstrate the current buggy behaviour. + +2. the tests will fail, try to understand how and why they are failing +3. fix the code +4. go back to 1. and repeat till the tests are passing. +5. adjust tests that demonstrate the **buggy** behaviour + + delete the tests in core that are tagged with that particular issue and `@skipOnOcV10`, but be careful because a lot of tests are tagged with multiple issues. + Only delete tests that demonstrate the buggy behaviour if you fixed all bugs related to that test. If not you might have to adjust the test. +6. unskip tests that demonstrate the **correct** behaviour + + The `@skipOnOcis` tag should not be needed now, so delete it, but leave the issue tag for future reference. +7. make a PR to core with the changed tests +8. make a PR to ocis running the adjusted tests + + To confirm that all tests (old and changed) run fine make a PR to ocis with your code changes and point drone to your branch in core to get the changed tests. + For that change this line in the `acceptance-tests` section + + `'git clone -b master --depth=1 https://github.com/owncloud/core.git /srv/app/testrunner',` + + to clone your core branch e.g. + + `'git clone -b fixRevaIssue122 --depth=1 https://github.com/owncloud/core.git /srv/app/testrunner',` + +9. merge PRs + + After you have confirmed that the tests pass everywhere merge the core PR and immediately revert the change in 8. and merge the ocis PR + + If the changes also affect the `ocis-reva` repository make sure the changes get ported over there immediately, otherwise the tests will start failing there. + + +### Notes +- in a normal case the test-code cleans up users after the test-run, but if a test-run is interrupted (e.g. by CTRL+C) users might have been left on the LDAP server. In that case rerunning the tests requires wiping the users in the ldap server, otherwise the tests will fail when trying to populate the users. +- the tests usually create users in the OU `TestUsers` with usernames specified in the feature file. If not defined in the feature file, most users have the password `123456`, defined by `regularUserPassword` in `behat.yml`, but other passwords are also used, see [`\FeatureContext::getPasswordForUser()`](https://github.com/owncloud/core/blob/master/tests/acceptance/features/bootstrap/FeatureContext.php#L386) for mapping and [`\FeatureContext::__construct`](https://github.com/owncloud/core/blob/master/tests/acceptance/features/bootstrap/FeatureContext.php#L1668) for the password definitions. diff --git a/docs/tracing.md b/docs/tracing.md new file mode 100644 index 000000000..f8087d33e --- /dev/null +++ b/docs/tracing.md @@ -0,0 +1,38 @@ +--- +title: "Tracing" +date: 2020-05-13T12:09:00+01:00 +weight: 55 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs +geekdocFilePath: tracing.md +--- + +By default, we use [Jaeger](https://www.jaegertracing.io) for request tracing within oCIS. You can follow these steps +to get started: + +1. Start Jaeger by using the all-in-one docker image: + ```console + docker run -d --name jaeger \ + -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ + -p 5775:5775/udp \ + -p 6831:6831/udp \ + -p 6832:6832/udp \ + -p 5778:5778 \ + -p 16686:16686 \ + -p 14268:14268 \ + -p 14250:14250 \ + -p 9411:9411 \ + jaegertracing/all-in-one:1.17 + ``` +2. Every single oCIS service has its own environment variables for enabling and configuring tracing. You can, for example, +enable tracing in Reva when starting the oCIS single binary like this: + ```console + REVA_TRACING_ENABLED=true \ + REVA_TRACING_ENDPOINT=localhost:6831 \ + REVA_TRACING_COLLECTOR=http://localhost:14268/api/traces \ + ./bin/ocis server + ``` +3. Make the actual request that you want to trace. +4. Open up the [Jaeger UI](http://localhost:16686) to analyze request traces. + +For more information on Jaeger, please refer to their [Documentation](https://www.jaegertracing.io/docs/1.17/). diff --git a/go.mod b/go.mod index e8bbae43b..9e25d74eb 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( contrib.go.opencensus.io/exporter/jaeger v0.2.0 contrib.go.opencensus.io/exporter/ocagent v0.6.0 contrib.go.opencensus.io/exporter/zipkin v0.1.1 + github.com/UnnoTed/fileb0x v1.1.4 github.com/chzyer/logex v1.1.10 // indirect github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 // indirect github.com/gogo/protobuf v1.3.1 // indirect @@ -14,26 +15,27 @@ require ( github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e github.com/micro/micro/v2 v2.0.1-0.20200210100719-f38a1d8d5348 github.com/openzipkin/zipkin-go v0.2.2 + github.com/owncloud/flaex v0.2.0 + github.com/owncloud/ocis-accounts v0.1.1 github.com/owncloud/ocis-glauth v0.4.0 github.com/owncloud/ocis-graph v0.0.0-20200318175820-9a5a6e029db7 github.com/owncloud/ocis-graph-explorer v0.0.0-20200210111049-017eeb40dc0c github.com/owncloud/ocis-hello v0.1.0-alpha1.0.20200207094758-c866cafca7e5 - github.com/owncloud/ocis-konnectd v0.2.0 + github.com/owncloud/ocis-konnectd v0.3.1 + github.com/owncloud/ocis-migration v0.0.0-20200504185909-72274a4f1449 github.com/owncloud/ocis-ocs v0.0.0-20200318181133-cc66a0531da7 - github.com/owncloud/ocis-phoenix v0.3.0 + github.com/owncloud/ocis-phoenix v0.6.0 github.com/owncloud/ocis-pkg/v2 v2.2.1 - github.com/owncloud/ocis-proxy v0.1.0 - github.com/owncloud/ocis-reva v0.0.0-20200318210849-075c6608b85f - github.com/owncloud/ocis-thumbnails v0.0.0-20200318131505-e0ab0b37a5a4 - github.com/owncloud/ocis-webdav v0.0.0-20200319135906-711d1be75a2b + github.com/owncloud/ocis-proxy v0.3.1 + github.com/owncloud/ocis-reva v0.3.0 + github.com/owncloud/ocis-thumbnails v0.1.2 + github.com/owncloud/ocis-webdav v0.1.0 + github.com/restic/calens v0.2.0 go.opencensus.io v0.22.3 go.uber.org/atomic v1.5.1 // indirect go.uber.org/multierr v1.4.0 // indirect - stash.kopano.io/kc/konnect v0.29.0 // indirect ) -replace stash.kopano.io/kc/konnect => github.com/IljaN/konnect v0.30.0-alpha1 - replace google.golang.org/grpc => google.golang.org/grpc v1.26.0 replace github.com/owncloud/ocis-reva => ../ocis-reva diff --git a/go.sum b/go.sum index 63fb49c3e..43d52e14d 100644 --- a/go.sum +++ b/go.sum @@ -57,17 +57,19 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/GeertJohan/yubigo v0.0.0-20190917122436-175bc097e60e h1:Bqtt5C+uVk+vH/t5dmB47uDCTwxw16EYHqvJnmY2aQc= github.com/GeertJohan/yubigo v0.0.0-20190917122436-175bc097e60e/go.mod h1:njRCDrl+1RQ/A/+KVU8Ho2EWAxUSkohOWczdW3dzDG0= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= -github.com/IljaN/konnect v0.30.0-alpha1 h1:Xh74tvMeAwlkY6EmQGG4qTS+sswjDDO4ez5GhtXnEoA= -github.com/IljaN/konnect v0.30.0-alpha1/go.mod h1:zG2O952eLDsmubz3AxA/SFANL8zjNVgiJathjUaqqfw= github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.1.0 h1:Y2lUDsFKVRSYGojLJ1yLxSXdMmMYTYls0rCvoqmMUQk= +github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig/v3 v3.0.1/go.mod h1:Cp7HwZjmqKrC+Y7XqSJOU2yRvAJRGLiohfgz5ZJj8+4= +github.com/Masterminds/sprig/v3 v3.1.0 h1:j7GpgZ7PdFqNsmncycTHsLmVPf5/3wJtlgW9TNDYD9Y= +github.com/Masterminds/sprig/v3 v3.1.0/go.mod h1:ONGMf7UfYGAbMXCZmQLy8x3lCDIPrEZE/rU8pmrbihA= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -126,14 +128,17 @@ github.com/aws/aws-sdk-go v1.20.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.23.19/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.31/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.29.26/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= github.com/aws/aws-sdk-go v1.30.12 h1:KrjyosZvkpJjcwMk0RNxMZewQ47v7+ZkbQDXjWsJMs8= github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.31.0 h1:ITLZ0oy7IOB1NGt2Ee75bLevBaH1jaAXE2eyGbPRbCg= -github.com/aws/aws-sdk-go v1.31.0/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go v1.30.25/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.31.1 h1:5tv3VtTS/IM1yZ6lxMQQVmH28SkkR3b3w+6u+9rcLx4= github.com/aws/aws-sdk-go v1.31.1/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-xray-sdk-go v0.9.4/go.mod h1:XtMKdBQfpVut+tJEwI7+dJFRxxRdxHDyVNp2tHXRq04= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= +github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs= +github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -141,7 +146,6 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= @@ -157,7 +161,6 @@ github.com/bradfitz/iter v0.0.0-20190303215204-33e6a9893b0c/go.mod h1:PyRFw1Lt2w github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= -github.com/cenkalti/backoff v2.1.1+incompatible h1:tKJnvO2kl0zmb/jA5UKAt4VoEVw1qxKWjE/Bpp46npY= github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -228,17 +231,28 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/crewjam/httperr v0.0.0-20190612203328-a946449404da h1:WXnT88cFG2davqSFqvaFfzkSMC0lqh/8/rKZ+z7tYvI= +github.com/crewjam/httperr v0.0.0-20190612203328-a946449404da/go.mod h1:+rmNIXRvYMqLQeR4DHyTvs6y0MEMymTz4vyFpFkKTPs= +github.com/crewjam/saml v0.4.0 h1:gvSlboe4BO1APaU2eDdsbql3itRat310Q5qs2Seim2k= +github.com/crewjam/saml v0.4.0/go.mod h1:geQUbAAwmTKNJFDzoXaTssZHY26O89PHIm3K3YWjWnI= github.com/cs3org/go-cs3apis v0.0.0-20191128165347-19746c015c83/go.mod h1:IsVGyZrOLUQD48JIhlM/xb3Vz6He5o2+W0ZTfUGY+IU= github.com/cs3org/go-cs3apis v0.0.0-20200306065539-29abc33f5be0/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= +github.com/cs3org/go-cs3apis v0.0.0-20200408065125-6e23f3ecec0a/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= github.com/cs3org/go-cs3apis v0.0.0-20200423154403-462ce7762d4a h1:+ucCukFjYS+L7Sg3GbXoD0M0Pz6CQEhJ9HC97GHc9TU= github.com/cs3org/go-cs3apis v0.0.0-20200423154403-462ce7762d4a/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= github.com/cs3org/go-cs3apis v0.0.0-20200515145316-7048e6a5a73d h1:toZvBLH1cbHT65kv6xYPd9QqwLUHwOAVHqe9j4obAq4= github.com/cs3org/go-cs3apis v0.0.0-20200515145316-7048e6a5a73d/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= +github.com/cs3org/reva v0.0.2-0.20200115110931-4c7513415ec5/go.mod h1:Hk3eCcdhtv4eIhKvRK736fQuOyS1HuHnUcz0Dq6NK1A= +github.com/cs3org/reva v0.1.0/go.mod h1:8j6QyyAq9Kjj7RPfJb7M1aEmw5DmsuCJKUULXxYOyRo= +github.com/cs3org/reva v0.1.1-0.20200427161359-c1549a8110eb h1:NmIewIBHshEpn8q1pezRDoG2B7hRVgnWYLX1XSVjx1E= +github.com/cs3org/reva v0.1.1-0.20200427161359-c1549a8110eb/go.mod h1:I20R3mjgLU9y9Ol3pIckY3M948l7mkJORdpfSR9w9tM= +github.com/cs3org/reva v0.1.1-0.20200512135421-3aa67e818a8d/go.mod h1:YIgUciBl5fg6xhV+ZPWkfWlc5H4wjXg/8+ngIYPzvKI= +github.com/cs3org/reva v0.1.1-0.20200520150229-ce94fda7436f/go.mod h1:fVZ7IXTQaxNit5Q9yA+x6ciJmUpEHgBrxtwmiGGBY40= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4= github.com/deckarep/golang-set v1.7.1 h1:SCQV0S6gTtp6itiFrTqI+pfmJ4LN85S1YzhDf9rTHJQ= github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= @@ -266,21 +280,16 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= -github.com/ef-ds/deque v1.0.4-0.20190904040645-54cb57c252a1/go.mod h1:HvODWzv6Y6kBf3Ah2WzN1bHjDUezGLaAhwuWVwfpEJs= github.com/eknkc/basex v1.0.0/go.mod h1:k/F/exNEHFdbs3ZHuasoP2E7zeWwZblG84Y7Z59vQRo= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20181003060214-f58a169a71a5/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/eternnoir/gncp v0.0.0-20170707042257-c70df2d0cd68 h1:DHBMBKJK69xBWnD/jNkTN0sOT7nT7I5If9VMsk9Jj5Y= github.com/eternnoir/gncp v0.0.0-20170707042257-c70df2d0cd68/go.mod h1:8FuQ7lU9ZvIJGvc04F/qblkjqIfBahAoEFV+XPxByGw= -github.com/evanphx/json-patch v4.2.0+incompatible h1:fUDGZCv/7iAN7u0puUVhvKCcsR6vRfwrJatElLBEf0I= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.0.0 h1:dKTrUeykyQwKb/kx7Z+4ukDs6l+4L41HqG1XHnhX7WE= -github.com/evanphx/json-patch/v5 v5.0.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/eventials/go-tus v0.0.0-20190617130015-9db47421f6a0 h1:iJijjXGuAFvYA8rTypGm7xMcl3QKlhuNn+nn5dNGA/k= github.com/eventials/go-tus v0.0.0-20190617130015-9db47421f6a0/go.mod h1:CfBfpEHiX55nX/EXkG3bOskUPrYe51D/guFiBupNSik= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= @@ -298,7 +307,6 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsouza/go-dockerclient v1.4.4/go.mod h1:PrwszSL5fbmsESocROrOGq/NULMXRw+bajY0ltzD6MA= github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+4np9qfPbb+znGc= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/glauth/glauth v1.1.3-0.20200228160118-2d4f5d547682 h1:8qan0vNLF7i9Wq07mhTn/60hXEPdGTYJnR82P4X818s= @@ -361,6 +369,7 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/go-stomp/stomp v2.0.3+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31 h1:28FVBuwkwowZMjbA7M0wXsI6t3PYulRTMio3SO+eKCM= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.6/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY= @@ -699,6 +708,7 @@ github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoI github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -706,12 +716,16 @@ github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbc github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/huandu/xstrings v1.3.0 h1:gvV6jG9dTgFEncxo+AF7PH6MZXi/vZl25owA/8Dg8Wo= github.com/huandu/xstrings v1.3.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= +github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= @@ -728,6 +742,7 @@ github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeY github.com/jmoiron/sqlx v0.0.0-20180614180643-0dae4fefe7c0/go.mod h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU= github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -867,9 +882,6 @@ github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5 github.com/micro/go-micro/v2 v2.0.1-0.20200207205803-ef537270add3/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e h1:EXYgiOLVc7zkUCIsAc++GQiOvPRh/gaGl++fqY1807g= github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= -github.com/micro/go-micro/v2 v2.6.0 h1:HH6uEqTu6pkBtAlwAqQW2sf33640iEa1s9puGIctpO0= -github.com/micro/go-micro/v2 v2.6.0/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= -github.com/micro/go-micro/v2 v2.7.0 h1:oWmCoA81Z7kCk26hiRGNrlJ8TWmpb3/ImO0EYdhoXBw= github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1 h1:7IkXfl94MdLZQwk0lNmu9Cg5WP42Zak9EtQMeN4SvVs= @@ -894,7 +906,6 @@ github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceT github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= @@ -914,6 +925,8 @@ github.com/mitchellh/mapstructure v1.3.0 h1:iDwIio/3gk2QtLLEsqU5lInaMzos0hDTz8a6 github.com/mitchellh/mapstructure v1.3.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -970,6 +983,7 @@ github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2 github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= +github.com/ogier/pflag v0.0.1 h1:RW6JSWSu/RkSatfcLtogGfFgpim5p7ARQ10ECk5O750= github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= @@ -1012,6 +1026,8 @@ github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6 h1:lNCW6THr github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI= github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/ory/fosite v0.29.0/go.mod h1:0atSZmXO7CAcs6NPMI/Qtot8tmZYj04Nddoold4S2h0= +github.com/ory/fosite v0.30.2/go.mod h1:Lq9qQ9Sl6mcea2Tt8J7PU+wUeFYPZ+vg7N3zPVKGbN8= +github.com/ory/fosite v0.30.4/go.mod h1:Lq9qQ9Sl6mcea2Tt8J7PU+wUeFYPZ+vg7N3zPVKGbN8= github.com/ory/fosite v0.31.0 h1:NZ0FA4ywPEYrCGLNVBAz2dq8vTacLDbbO4Iiy68WCKQ= github.com/ory/fosite v0.31.0/go.mod h1:lSSqjo8Kr/U1P3kJWxsNGHmq7TnH/7pS1ijvQRT7G+g= github.com/ory/fosite v0.31.3 h1:5WjLwfs+yUALZjzKUKGN/M+ddBJ5Ol6NawxuCO2TuAg= @@ -1027,11 +1043,12 @@ github.com/ory/viper v1.5.6/go.mod h1:TYmpFpKLxjQwvT4f0QPpkOn4sDXU1kDgAwJpgLYiQ2 github.com/ory/x v0.0.85/go.mod h1:s44V8t3xyjWZREcU+mWlp4h302rTuM4aLXcW+y5FbQ8= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= github.com/owncloud/flaex v0.0.0-20200411150708-dce59891a203/go.mod h1:jip86t4OVURJTf8CM/0e2qcji/Y4NG3l2lR8kex4JWw= +github.com/owncloud/flaex v0.2.0 h1:3FLf8oyMgA6HLK7w4+VJ5N1oVA8G7MptLCVjfxxIaww= github.com/owncloud/flaex v0.2.0/go.mod h1:jip86t4OVURJTf8CM/0e2qcji/Y4NG3l2lR8kex4JWw= github.com/owncloud/ocis-accounts v0.1.0 h1:6YjvRWNW26QHOqOFONg0HeogxhxaVGS1S2AoCUgzE3M= github.com/owncloud/ocis-accounts v0.1.0/go.mod h1:eoOPfuFCJ23n2csSMzapfjzVhG2kt8sQ2tu/9J+SwsA= -github.com/owncloud/ocis-accounts v0.1.2-0.20200522102615-8c7da929195a h1:MxvILJwMeBzhtt2EGjBveMSbRgOt4rB32+Ijd/XQiZk= -github.com/owncloud/ocis-accounts v0.1.2-0.20200522102615-8c7da929195a/go.mod h1:rENi9CsW2FgWk8FyHVKFrRvtR++/EZAR1ro9XgeEXAY= +github.com/owncloud/ocis-accounts v0.1.1 h1:WYQ/KLbNZB7EmCZQJTvrySfWFuS0m9oM0gTkyKrjFOM= +github.com/owncloud/ocis-accounts v0.1.1/go.mod h1:2bAek8WWDb7jPNpIzefi2+4jqpI1U6dgpzjyRFX94Zg= github.com/owncloud/ocis-glauth v0.4.0 h1:L+S2UzkJJv5NWBVnTIZObdFz5zvKz8L0crIWbXtTF8o= github.com/owncloud/ocis-glauth v0.4.0/go.mod h1:dZzZdRkssaEiDg3UdlQL+kozVfpyVUhdUd0uGcTdCH8= github.com/owncloud/ocis-graph v0.0.0-20200318175820-9a5a6e029db7 h1:gT0GyIOoR7XtpZ7sIxVJSckcz/nueGB1Cm1xNaflXQ0= @@ -1039,39 +1056,45 @@ github.com/owncloud/ocis-graph v0.0.0-20200318175820-9a5a6e029db7/go.mod h1:IRm6 github.com/owncloud/ocis-graph-explorer v0.0.0-20200210111049-017eeb40dc0c h1:8g3u2JwOMP/UE+0B+YjV7UWEQzyCPbnZzwIto6lNc0I= github.com/owncloud/ocis-graph-explorer v0.0.0-20200210111049-017eeb40dc0c/go.mod h1:zspcodmHIzGmB6Py8Ve+oO6wXFKRra5bEx1Q9HdJlrY= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= -github.com/owncloud/ocis-hello v0.1.0-alpha1/go.mod h1:tU2bOB7DjuXZ+ju+5A+7pUHmTfPIYUk3tMflqHTBTpE= github.com/owncloud/ocis-hello v0.1.0-alpha1.0.20200207094758-c866cafca7e5 h1:s4Cz5Mj08JS7yCpwcT5MXvGsDjL1cUC2sKocHhXJejo= github.com/owncloud/ocis-hello v0.1.0-alpha1.0.20200207094758-c866cafca7e5/go.mod h1:5E/ej0jrrU3SNaBUi7eu5iuVu5R4mTTMH1jXXiwnhqI= -github.com/owncloud/ocis-konnectd v0.0.0-20200303180152-937016f63393/go.mod h1:RSm/AcbZ+Wq608qRGW28Rp95ktn4Hxi9BvY2c9aj7lU= -github.com/owncloud/ocis-konnectd v0.2.0 h1:X66mtAytJwds1K47yDNXXV+hAX/IjHwWounfitg60DI= -github.com/owncloud/ocis-konnectd v0.2.0/go.mod h1:nxM4VPUdJW+5M8jnfsamiQ9OOGcjJrl2FHF2A8WIdmg= +github.com/owncloud/ocis-konnectd v0.3.1 h1:d886SLx6oR2ldNAvJC8TB/0+XnYCQiNFFTGzoR5giW0= +github.com/owncloud/ocis-konnectd v0.3.1/go.mod h1:kOBYY8P1s2KJRmUc//bThSFtSIH6NO1+6WogmrHcMRY= +github.com/owncloud/ocis-migration v0.0.0-20200504185909-72274a4f1449 h1:Q3o24JwiJVp1XpUXIt3MrJt6tGNgq9NVYFwW6gkhVq8= +github.com/owncloud/ocis-migration v0.0.0-20200504185909-72274a4f1449/go.mod h1:twno2cU2s4mNB5lKdWXkphrAA4dSF7Vn/m3K9aQpDcg= github.com/owncloud/ocis-ocs v0.0.0-20200318181133-cc66a0531da7 h1:AHKA5xrnSBOdFjVTkaXzCyJl7vhOVklJD/b/T6Ky/oI= github.com/owncloud/ocis-ocs v0.0.0-20200318181133-cc66a0531da7/go.mod h1:W0ry/qPP85Yw/KKd0IoOdjOI914bvzOaEeM9bzRuwaQ= -github.com/owncloud/ocis-phoenix v0.3.0 h1:WejuOUdKFBXBBmYyOltZOblKiQLpp6pQG+gwXDBpj58= -github.com/owncloud/ocis-phoenix v0.3.0/go.mod h1:fZhKATdGNkhVAd9jSV0qiR/ZnqFlvQ32iiZKGgSpoII= -github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= +github.com/owncloud/ocis-phoenix v0.6.0 h1:p++botHH6WizAiMXELBTDRw9oVqcjyMliLf5BLgrDxw= +github.com/owncloud/ocis-phoenix v0.6.0/go.mod h1:uTJsJV9mTnWmMOgg1YaxUaqmAjH5P+sikp9tZQKSwpM= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= +github.com/owncloud/ocis-pkg v1.3.0 h1:2fkgvfd/spTjschuulYMHRuzxkCGGXae9ocebVYkm74= +github.com/owncloud/ocis-pkg v1.3.0/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= -github.com/owncloud/ocis-pkg/v2 v2.0.2/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= github.com/owncloud/ocis-pkg/v2 v2.0.3-0.20200309150924-5c659fd4b0ad/go.mod h1:TrBRa+D8mUTsl+qvQiIksJbUvxdE/Qq9jEHUcERPQ60= -github.com/owncloud/ocis-pkg/v2 v2.1.0/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= github.com/owncloud/ocis-pkg/v2 v2.2.0 h1:lsb1PSn8F4ppPHOECVc3fqziDM/VdGQ/zqxQnEk+qi8= github.com/owncloud/ocis-pkg/v2 v2.2.0/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV03z6zI= github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= -github.com/owncloud/ocis-proxy v0.1.0 h1:i37TizGuaNI+AOK0YfsNggC+c5ubXx6IAwCvmczKTps= -github.com/owncloud/ocis-proxy v0.1.0/go.mod h1:nwSlXX2QQy+Z8ut77ZuSSxbKoe39jIqFNLs0lMwnyoE= -github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363/go.mod h1:/h0ceztOoFc3KAnm8nqZI4zwsaaZK9q4MTgtintwsXc= -github.com/owncloud/ocis-thumbnails v0.0.0-20200318131505-e0ab0b37a5a4 h1:A0Swro39iP0VPUaLiY6JRzShfria6b2Nq/VjF9ZNbuY= +github.com/owncloud/ocis-proxy v0.3.1 h1:49weyxHNQjOeWTaf31LlQp5uul8ZoJenfe9o4P4fetU= +github.com/owncloud/ocis-proxy v0.3.1/go.mod h1:HwsIKM9etps19bBVwjOX+Jrv9pfDvw3azvaHaxMiBCI= +github.com/owncloud/ocis-reva v0.2.1 h1:4aOOJT7tn9GCeNCM+qr33de2xobW4nAKJUvbb0BpL2k= +github.com/owncloud/ocis-reva v0.2.1/go.mod h1:Ew9XgScQzFbdpSZySq1PHVISgd4y03Ms62lFy+mAx2s= +github.com/owncloud/ocis-reva v0.2.2-0.20200513073117-ee9cd9b8d3ab h1:WNIv1WkJi5JiLEEf8OzSZXUjiad9pqYk9+EUKklwq9k= +github.com/owncloud/ocis-reva v0.2.2-0.20200513073117-ee9cd9b8d3ab/go.mod h1:mO2vMom9eC3mdMKOtOIYUUlk3eocUZcVXidKk7IfSWA= +github.com/owncloud/ocis-reva v0.3.0 h1:vjgE1+Hl/BZIpFScVNd7AumqPiz7bz0f+vC6jxPKBlo= +github.com/owncloud/ocis-reva v0.3.0/go.mod h1:AHqIFXy/2mUkmDd9c6lEOze+eQn6JwOuSQmk/Skx3uM= github.com/owncloud/ocis-thumbnails v0.0.0-20200318131505-e0ab0b37a5a4/go.mod h1:VmCoxwitTs6oRxIaGz6xridLPwA6ReRMej22jBhkRIM= -github.com/owncloud/ocis-webdav v0.0.0-20200319135906-711d1be75a2b h1:UQY6JOAl7uZAZqP1apoIv8sxTU67pxcH7j4Bj3SB64k= -github.com/owncloud/ocis-webdav v0.0.0-20200319135906-711d1be75a2b/go.mod h1:y4h2FLMuRbMSB0hoyX/BG/1LXtgaXbwFsUDsO6L/PhE= +github.com/owncloud/ocis-thumbnails v0.1.2-0.20200422124828-f92a40879feb h1:eLvwnJ88x0erIsjMEa2b6dI1pBTEz52eMKrBPJfIOLM= +github.com/owncloud/ocis-thumbnails v0.1.2-0.20200422124828-f92a40879feb/go.mod h1:N9zPXTyUmQ7vi19Y5EO94MRw19up/3SK3SSX5P3PvFw= +github.com/owncloud/ocis-thumbnails v0.1.2 h1:bX59AqzEeIMlzyYzA55lpgh6Mk6wHXpGmU4tVUXjCkY= +github.com/owncloud/ocis-thumbnails v0.1.2/go.mod h1:N9zPXTyUmQ7vi19Y5EO94MRw19up/3SK3SSX5P3PvFw= +github.com/owncloud/ocis-webdav v0.1.0 h1:A7wI6knfIDwvlAMrW+YOmP9gxF7bxAtsgIuFs11+fM4= +github.com/owncloud/ocis-webdav v0.1.0/go.mod h1:hB3KbiMS7kyq9bG/BwKSI+lLM4PIMYEckrT2IFYTGxg= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/parnurzeal/gorequest v0.2.15/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= @@ -1157,6 +1180,8 @@ github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF github.com/rs/zerolog v1.18.0 h1:CbAm3kP2Tptby1i9sYy2MGRg0uxIN9cyDb59Ys7W8z8= github.com/rs/zerolog v1.18.0/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= github.com/rubenv/sql-migrate v0.0.0-20190212093014-1007f53448d7/go.mod h1:WS0rl9eEliYI8DPnr3TOwz4439pay+qNgzJoVya/DmY= +github.com/russellhaering/goxmldsig v0.0.0-20180430223755-7acd5e4a6ef7 h1:J4AOUcOh/t1XbQcJfkEqhzgvMJ2tDxdCVvmHxW5QXao= +github.com/russellhaering/goxmldsig v0.0.0-20180430223755-7acd5e4a6ef7/go.mod h1:Oz4y6ImuOQZxynhbSXk7btjEfNBtGlj2dcaOvXl2FSM= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= @@ -1177,8 +1202,6 @@ github.com/segmentio/backo-go v0.0.0-20160424052352-204274ad699c/go.mod h1:kJ9mm github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516 h1:ofR1ZdrNSkiWcMsRrubK9tb2/SlZVWttAfqUjJi6QYc= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sethgrid/pester v0.0.0-20190127155807-68a33a018ad0/go.mod h1:Ad7IjTpvzZO8Fl0vh9AzQ+j/jYZfyp2diGwI8m5q+ns= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= @@ -1220,6 +1243,8 @@ github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTd github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= @@ -1294,7 +1319,6 @@ github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50w github.com/vimeo/go-util v1.2.0/go.mod h1:s13SMDTSO7AjH1nbgp707mfN5JFIWUFDU5MDDuRRtKs= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= @@ -1312,6 +1336,7 @@ github.com/yaegashi/msgraph.go v0.1.1-0.20200221123608-2d438cf2a7cc h1:ejaC8rvIv github.com/yaegashi/msgraph.go v0.1.1-0.20200221123608-2d438cf2a7cc/go.mod h1:tso14hwzqX4VbnWTNsxiL0DvMb2OwbGISFA7jDibdWc= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +github.com/zenazn/goji v0.9.1-0.20160507202103-64eb34159fe5/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= @@ -1386,11 +1411,11 @@ golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20191128160524-b544559bb6d1/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200210222208-86ce3cb69678/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200320181102-891825fb96df h1:lDWgvUvNnaTnNBc/dwOty86cFeKoKWbwy2wQj0gIxbU= golang.org/x/crypto v0.0.0-20200320181102-891825fb96df/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM= -golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200420201142-3c4aac89819a h1:y6sBfNd1b9Wy08a6K1Z1DZc4aXABUN5TKjkYhz7UKmo= +golang.org/x/crypto v0.0.0-20200420201142-3c4aac89819a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1406,11 +1431,14 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1537,7 +1565,6 @@ golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200103143344-a1369afcdac7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1547,8 +1574,6 @@ golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c h1:jceGD5YNJGgGMkJz79agzOln1 golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1618,7 +1643,9 @@ golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200427214658-4697a2867c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200421042724-cfa8b22178d2 h1:fVXd7Kf16vo/CTZCrBFb6BeEhaSbBtsPz9oWmWAoyl8= +golang.org/x/tools v0.0.0-20200421042724-cfa8b22178d2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -1753,9 +1780,7 @@ gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab/go.mod h1:NELv708mC2Q9lQf29l+sO/v7NIOAQzEXu7jcugNzwvM= honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.0.0-20191109101513-0171b7c15da1/go.mod h1:VJq7+38rpM4TSUbRiZX4P5UVAKK2UQpNQLZClkFQkpE= @@ -1776,6 +1801,8 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +stash.kopano.io/kc/konnect v0.30.0 h1:jsdL6CeaKyMumpcojdf5IdZIBUpTne6dwU9KpJ32Sz0= +stash.kopano.io/kc/konnect v0.30.0/go.mod h1:mybKKR/PiP/yvjpJI/d1MSTTzirLOrI0sN1C6Wlezmg= stash.kopano.io/kgol/kcc-go/v5 v5.0.1 h1:urR9hOR6TnTKjGkzZKac/a9cA8ws1WecWLTgiYubLQw= stash.kopano.io/kgol/kcc-go/v5 v5.0.1/go.mod h1:0ZmjWapy3zp+TAjZI6iCrcfh+BthZbB2WM1VfhDgNB4= stash.kopano.io/kgol/ksurveyclient-go v0.6.0/go.mod h1:LJMDQBROS2oXxBN04eSI6j1KhgWlqMFd8xKjXV4Irtw= diff --git a/pkg/command/accounts.go b/pkg/command/accounts.go new file mode 100644 index 000000000..88b3b6edd --- /dev/null +++ b/pkg/command/accounts.go @@ -0,0 +1,40 @@ +package command + +import ( + "github.com/micro/cli/v2" + "github.com/owncloud/ocis-accounts/pkg/command" + svcconfig "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/flagset" + "github.com/owncloud/ocis/pkg/config" + "github.com/owncloud/ocis/pkg/register" +) + +// AccountsCommand is the entrypoint for the accounts command. +func AccountsCommand(cfg *config.Config) *cli.Command { + return &cli.Command{ + Name: "accounts", + Usage: "Start accounts server", + Category: "Extensions", + Flags: flagset.ServerWithConfig(cfg.Accounts), + Action: func(c *cli.Context) error { + accountsCommand := command.Server(configureAccounts(cfg)) + if err := accountsCommand.Before(c); err != nil { + return err + } + + return cli.HandleAction(accountsCommand.Action, c) + }, + } +} + +func configureAccounts(cfg *config.Config) *svcconfig.Config { + cfg.Accounts.Log.Level = cfg.Log.Level + cfg.Accounts.Log.Pretty = cfg.Log.Pretty + cfg.Accounts.Log.Color = cfg.Log.Color + + return cfg.Accounts +} + +func init() { + register.AddCommand(AccountsCommand) +} diff --git a/pkg/command/migration-import.go b/pkg/command/migration-import.go new file mode 100644 index 000000000..c880528af --- /dev/null +++ b/pkg/command/migration-import.go @@ -0,0 +1,28 @@ +package command + +import ( + "github.com/micro/cli/v2" + "github.com/owncloud/ocis-migration/pkg/command" + toolconfig "github.com/owncloud/ocis-migration/pkg/config" + "github.com/owncloud/ocis-migration/pkg/flagset" + "github.com/owncloud/ocis/pkg/config" + "github.com/owncloud/ocis/pkg/register" +) + +// ImportCommand is the entrypoint for the accounts command. +func ImportCommand(cfg *config.Config) *cli.Command { + tc := toolconfig.New() + return &cli.Command{ + Name: "import", + Usage: "Import a user exported by owncloud/data_exporter", + Flags: flagset.ImportWithConfig(tc), + Action: func(c *cli.Context) error { + importCommand := command.Import(tc) + return cli.HandleAction(importCommand.Action, c) + }, + } +} + +func init() { + register.AddCommand(ImportCommand) +} diff --git a/pkg/command/revastorageeos.go b/pkg/command/revastorageeos.go new file mode 100644 index 000000000..13a428c02 --- /dev/null +++ b/pkg/command/revastorageeos.go @@ -0,0 +1,40 @@ +package command + +import ( + "github.com/micro/cli/v2" + "github.com/owncloud/ocis-reva/pkg/command" + svcconfig "github.com/owncloud/ocis-reva/pkg/config" + "github.com/owncloud/ocis-reva/pkg/flagset" + "github.com/owncloud/ocis/pkg/config" + "github.com/owncloud/ocis/pkg/register" +) + +// RevaStorageEOSCommand is the entrypoint for the reva-storage-oc command. +func RevaStorageEOSCommand(cfg *config.Config) *cli.Command { + return &cli.Command{ + Name: "reva-storage-eos", + Usage: "Start reva eos storage", + Category: "Extensions", + Flags: flagset.StorageEOSWithConfig(cfg.Reva), + Action: func(c *cli.Context) error { + scfg := configureRevaStorageEOS(cfg) + + return cli.HandleAction( + command.StorageEOS(scfg).Action, + c, + ) + }, + } +} + +func configureRevaStorageEOS(cfg *config.Config) *svcconfig.Config { + cfg.Reva.Log.Level = cfg.Log.Level + cfg.Reva.Log.Pretty = cfg.Log.Pretty + cfg.Reva.Log.Color = cfg.Log.Color + + return cfg.Reva +} + +func init() { + register.AddCommand(RevaStorageEOSCommand) +} diff --git a/pkg/command/revastorageeosdata.go b/pkg/command/revastorageeosdata.go new file mode 100644 index 000000000..f78668284 --- /dev/null +++ b/pkg/command/revastorageeosdata.go @@ -0,0 +1,40 @@ +package command + +import ( + "github.com/micro/cli/v2" + "github.com/owncloud/ocis-reva/pkg/command" + svcconfig "github.com/owncloud/ocis-reva/pkg/config" + "github.com/owncloud/ocis-reva/pkg/flagset" + "github.com/owncloud/ocis/pkg/config" + "github.com/owncloud/ocis/pkg/register" +) + +// RevaStorageEOSDataCommand is the entrypoint for the reva-storage-eos-data command. +func RevaStorageEOSDataCommand(cfg *config.Config) *cli.Command { + return &cli.Command{ + Name: "reva-storage-eos-data", + Usage: "Start reva eos storage dataprovider", + Category: "Extensions", + Flags: flagset.StorageEOSDataWithConfig(cfg.Reva), + Action: func(c *cli.Context) error { + scfg := configureRevaStorageEOSData(cfg) + + return cli.HandleAction( + command.StorageEOSData(scfg).Action, + c, + ) + }, + } +} + +func configureRevaStorageEOSData(cfg *config.Config) *svcconfig.Config { + cfg.Reva.Log.Level = cfg.Log.Level + cfg.Reva.Log.Pretty = cfg.Log.Pretty + cfg.Reva.Log.Color = cfg.Log.Color + + return cfg.Reva +} + +func init() { + register.AddCommand(RevaStorageEOSDataCommand) +} diff --git a/pkg/command/revastoragehome.go b/pkg/command/revastoragehome.go index 6e2f90a3c..0608b34ae 100644 --- a/pkg/command/revastoragehome.go +++ b/pkg/command/revastoragehome.go @@ -32,8 +32,6 @@ func configureRevaStorageHome(cfg *config.Config) *svcconfig.Config { cfg.Reva.Log.Pretty = cfg.Log.Pretty cfg.Reva.Log.Color = cfg.Log.Color - cfg.Reva.Reva.StorageHome.ExposeDataServer = true - return cfg.Reva } diff --git a/pkg/command/revastorageoc.go b/pkg/command/revastorageoc.go index 267421bb1..8f9e950d7 100644 --- a/pkg/command/revastorageoc.go +++ b/pkg/command/revastorageoc.go @@ -32,8 +32,6 @@ func configureRevaStorageOC(cfg *config.Config) *svcconfig.Config { cfg.Reva.Log.Pretty = cfg.Log.Pretty cfg.Reva.Log.Color = cfg.Log.Color - cfg.Reva.Reva.StorageOC.ExposeDataServer = true - return cfg.Reva } diff --git a/pkg/command/server_simple.go b/pkg/command/server_simple.go index 51219dd30..3b78e45a1 100644 --- a/pkg/command/server_simple.go +++ b/pkg/command/server_simple.go @@ -15,15 +15,12 @@ import ( ) var ( - // SimpleRuntimeServices declares which services will be started for the fullstack server + // SimpleRuntimeServices declares which services will be started for the simple server SimpleRuntimeServices = []string{ "hello", "phoenix", - "reva-frontend", - "reva-gateway", - "reva-users", - "reva-auth-basic", - "reva-auth-bearer", + "konnectd", + "glauth", } ) @@ -50,7 +47,7 @@ func Simple(cfg *config.Config) *cli.Command { runtime := runtime.New( runtime.Logger(logger), - runtime.Services(append(runtime.RuntimeServices, SimpleRuntimeServices...)), + runtime.Services(append(runtime.MicroServices, SimpleRuntimeServices...)), runtime.MicroRuntime(cmd.DefaultCmd.Options().Runtime), runtime.Context(c), ) diff --git a/pkg/config/config.go b/pkg/config/config.go index a15eae047..d5a2bfe31 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -1,6 +1,7 @@ package config import ( + accounts "github.com/owncloud/ocis-accounts/pkg/config" glauth "github.com/owncloud/ocis-glauth/pkg/config" graphExplorer "github.com/owncloud/ocis-graph-explorer/pkg/config" graph "github.com/owncloud/ocis-graph/pkg/config" @@ -58,22 +59,24 @@ type Config struct { GRPC GRPC Tracing Tracing + Accounts *accounts.Config Graph *graph.Config GraphExplorer *graphExplorer.Config + GLAuth *glauth.Config Hello *hello.Config Konnectd *konnectd.Config OCS *ocs.Config Phoenix *phoenix.Config - WebDAV *webdav.Config - Reva *reva.Config - GLAuth *glauth.Config Proxy *proxy.Config + Reva *reva.Config Thumbnails *thumbnails.Config + WebDAV *webdav.Config } // New initializes a new configuration with or without defaults. func New() *Config { return &Config{ + Accounts: accounts.New(), Graph: graph.New(), GraphExplorer: graphExplorer.New(), Hello: hello.New(), diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index 6a81e96cc..a02ab2d9b 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -84,7 +84,7 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { }, &cli.StringFlag{ Name: "tracing-service", - Value: "hello", + Value: "ocis", Usage: "Service name for tracing", EnvVars: []string{"OCIS_TRACING_SERVICE"}, Destination: &cfg.Tracing.Service, diff --git a/pkg/micro/runtime/runtime.go b/pkg/micro/runtime/runtime.go index 6145856b0..f53643dbc 100644 --- a/pkg/micro/runtime/runtime.go +++ b/pkg/micro/runtime/runtime.go @@ -46,8 +46,11 @@ var ( "reva-storage-home", "reva-storage-public-link", "reva-storage-home-data", + "reva-storage-eos", + "reva-storage-eos-data", "reva-storage-oc", "reva-storage-oc-data", + "accounts", "glauth", "konnectd", "proxy", // TODO rename this command. It collides with micro's `proxy` diff --git a/templates/CONFIGURATION.tmpl b/templates/CONFIGURATION.tmpl new file mode 100644 index 000000000..f25878eaf --- /dev/null +++ b/templates/CONFIGURATION.tmpl @@ -0,0 +1,94 @@ +--- +title: "Configuration" +date: "{{ date "2006-01-02T15:04:05-0700" now }}" +weight: 20 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs +geekdocFilePath: configuration.md +--- +{{- define "options"}} +{{ $fnName := (last . ).Flags -}} +{{ range $opt := first . }}{{ with list $fnName $opt -}} +{{ $o := last . -}} +{{ if eq $o.FnName $fnName -}} +--{{ $o.Name }} | ${{ index $o.Env 0 }} +: {{ $o.Usage }}. {{- if $o.Default }} Default: `{{ $o.Default }}`.{{ end }} + +{{ end -}} +{{ end -}} +{{ end -}} +{{ end }} + +{{`{{< toc >}}`}} + +## Configuration + +oCIS Single Binary is not responsible for configuring extensions. Instead, each extension could either be configured by environment variables, cli flags or config files. + +Each extension has its dedicated documentation page (e.g. https://owncloud.github.io/extensions/ocis_proxy/configuration) which lists all possible configurations. Config files and environment variables are picked up if you use the `./bin/ocis server` command within the oCIS single binary. Command line flags must be set explicitly on the extensions subcommands. + +### Configuration using config files + +Out of the box extensions will attempt to read configuration details from: + +```console +/etc/ocis +$HOME/.ocis +./config +``` + +For this configuration to be picked up, have a look at your extension `root` command and look for which default config name it has assigned. *i.e: ocis-proxy reads `proxy.json | yaml | toml ...`*. + +So far we support the file formats `JSON` and `YAML`, if you want to get a full example configuration just take a look at [our repository](https://github.com/owncloud/ocis/tree/master/config), there you can always see the latest configuration format. These example configurations include all available options and the default values. The configuration file will be automatically loaded if it's placed at `/etc/ocis/ocis.yml`, `${HOME}/.ocis/ocis.yml` or `$(pwd)/config/ocis.yml`. + +### Envrionment variables + +If you prefer to configure the service with environment variables you can see the available variables below. + +### Commandline flags + +If you prefer to configure the service with commandline flags you can see the available variables below. Command line flags are only working when calling the subcommand directly. + +{{ $options := .Options -}} +{{ range $com := .Commands }}{{ with (list $options $com) -}} +{{ $c := last . -}} +{{ if eq $c.Name "ocis" -}} +## Root Command + +{{ $c.Usage }} + +Usage: `ocis [global options] command [command options] [arguments...]` +{{ template "options" . -}} +## Sub Commands + +{{ end -}} +{{ end -}} +{{ end -}} +{{- range $com := .Commands }}{{ with (list $options $com) -}} +{{- $c := last . }} +{{- if eq $c.Name "server" "health" -}} +{{- if ne $c.FnName "Simple" -}} +### ocis {{ $c.Name }} + +{{ $c.Usage }} + +Usage: `ocis {{ $c.Name }} [command options] [arguments...]` +{{ template "options" . }} +{{- end -}} +{{- end -}} +{{- end -}} +{{- end -}} + +### List of available Extension subcommands + +There are more subcommands to start the individual extensions. Please check the documentation about their usage and options in the dedicated section of the documentation. + +{{ range $com := .Commands }}{{ with $com -}} +{{ if and (ne .Name "health") (ne .Name "server") (ne .Name "ocis") -}} +#### ocis {{ .Name }} + +{{ .Usage }} + +{{ end -}} +{{- end -}} +{{- end -}} \ No newline at end of file diff --git a/tests/config/drone/identifier-registration.yml b/tests/config/drone/identifier-registration.yml new file mode 100644 index 000000000..6344b3d98 --- /dev/null +++ b/tests/config/drone/identifier-registration.yml @@ -0,0 +1,16 @@ +--- + +# OpenID Connect client registry. +clients: + - id: phoenix + name: OCIS + application_type: web + insecure: yes + trusted: yes + redirect_uris: + - http://ocis-server:9100/oidc-callback.html + - http://ocis-server:9100/ + origins: + - http://ocis-server:9100 + +authorities: diff --git a/tests/config/drone/ocis-config.json b/tests/config/drone/ocis-config.json new file mode 100644 index 000000000..6b596e512 --- /dev/null +++ b/tests/config/drone/ocis-config.json @@ -0,0 +1,19 @@ +{ + "server": "http://ocis-server:9140", + "theme": "owncloud", + "version": "0.1.0", + "openIdConnect": { + "metadata_url": "https://ocis-server:9200/.well-known/openid-configuration", + "authority": "https://ocis-server:9200", + "client_id": "phoenix", + "response_type": "code", + "scope": "openid profile email" + }, + "apps": [ + "files", + "draw-io", + "pdf-viewer", + "markdown-editor", + "media-viewer" + ] +} diff --git a/tools.go b/tools.go new file mode 100644 index 000000000..9dd061892 --- /dev/null +++ b/tools.go @@ -0,0 +1,9 @@ +// +build tools + +package main + +import ( + _ "github.com/UnnoTed/fileb0x" + _ "github.com/owncloud/flaex" + _ "github.com/restic/calens" +)