Skip to content

Commit

Permalink
Merge branch 'bridge'
Browse files Browse the repository at this point in the history
  • Loading branch information
glpatcern committed Jun 28, 2021
2 parents 2a5d78c + fe1f24a commit 8a09854
Show file tree
Hide file tree
Showing 30 changed files with 3,713 additions and 2,036 deletions.
114 changes: 114 additions & 0 deletions .vscode/.ropeproject/config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# The default ``config.py``
# flake8: noqa


def set_prefs(prefs):
"""This function is called before opening the project"""

# Specify which files and folders to ignore in the project.
# Changes to ignored resources are not added to the history and
# VCSs. Also they are not returned in `Project.get_files()`.
# Note that ``?`` and ``*`` match all characters but slashes.
# '*.pyc': matches 'test.pyc' and 'pkg/test.pyc'
# 'mod*.pyc': matches 'test/mod1.pyc' but not 'mod/1.pyc'
# '.svn': matches 'pkg/.svn' and all of its children
# 'build/*.o': matches 'build/lib.o' but not 'build/sub/lib.o'
# 'build//*.o': matches 'build/lib.o' and 'build/sub/lib.o'
prefs['ignored_resources'] = ['*.pyc', '*~', '.ropeproject',
'.hg', '.svn', '_svn', '.git', '.tox']

# Specifies which files should be considered python files. It is
# useful when you have scripts inside your project. Only files
# ending with ``.py`` are considered to be python files by
# default.
# prefs['python_files'] = ['*.py']

# Custom source folders: By default rope searches the project
# for finding source folders (folders that should be searched
# for finding modules). You can add paths to that list. Note
# that rope guesses project source folders correctly most of the
# time; use this if you have any problems.
# The folders should be relative to project root and use '/' for
# separating folders regardless of the platform rope is running on.
# 'src/my_source_folder' for instance.
# prefs.add('source_folders', 'src')

# You can extend python path for looking up modules
# prefs.add('python_path', '~/python/')

# Should rope save object information or not.
prefs['save_objectdb'] = True
prefs['compress_objectdb'] = False

# If `True`, rope analyzes each module when it is being saved.
prefs['automatic_soa'] = True
# The depth of calls to follow in static object analysis
prefs['soa_followed_calls'] = 0

# If `False` when running modules or unit tests "dynamic object
# analysis" is turned off. This makes them much faster.
prefs['perform_doa'] = True

# Rope can check the validity of its object DB when running.
prefs['validate_objectdb'] = True

# How many undos to hold?
prefs['max_history_items'] = 32

# Shows whether to save history across sessions.
prefs['save_history'] = True
prefs['compress_history'] = False

# Set the number spaces used for indenting. According to
# :PEP:`8`, it is best to use 4 spaces. Since most of rope's
# unit-tests use 4 spaces it is more reliable, too.
prefs['indent_size'] = 4

# Builtin and c-extension modules that are allowed to be imported
# and inspected by rope.
prefs['extension_modules'] = []

# Add all standard c-extensions to extension_modules list.
prefs['import_dynload_stdmods'] = True

# If `True` modules with syntax errors are considered to be empty.
# The default value is `False`; When `False` syntax errors raise
# `rope.base.exceptions.ModuleSyntaxError` exception.
prefs['ignore_syntax_errors'] = False

# If `True`, rope ignores unresolvable imports. Otherwise, they
# appear in the importing namespace.
prefs['ignore_bad_imports'] = False

# If `True`, rope will insert new module imports as
# `from <package> import <module>` by default.
prefs['prefer_module_from_imports'] = False

# If `True`, rope will transform a comma list of imports into
# multiple separate import statements when organizing
# imports.
prefs['split_imports'] = False

# If `True`, rope will remove all top-level import statements and
# reinsert them at the top of the module when making changes.
prefs['pull_imports_to_top'] = True

# If `True`, rope will sort imports alphabetically by module name instead
# of alphabetically by import statement, with from imports after normal
# imports.
prefs['sort_imports_alphabetically'] = False

# Location of implementation of
# rope.base.oi.type_hinting.interfaces.ITypeHintingFactory In general
# case, you don't have to change this value, unless you're an rope expert.
# Change this value to inject you own implementations of interfaces
# listed in module rope.base.oi.type_hinting.providers.interfaces
# For example, you can add you own providers for Django Models, or disable
# the search type-hinting in a class hierarchy, etc.
prefs['type_hinting_factory'] = (
'rope.base.oi.type_hinting.factory.default_type_hinting_factory')


def project_opened(project):
"""This function is called after opening the project"""
# Do whatever you like here!
17 changes: 12 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
# WOPI Server

A Vendor-neutral application gateway compatible with the Web-application Open Platform Interface (WOPI) specifications.
It enables ScienceMesh EFSS storages to integrate several Office Online platforms including Microsoft Office Online and Collabora Online.
This service is part of the ScienceMesh Interoperability Platform (IOP) and implements a Vendor-neutral application gateway compatible with the Web-application Open Platform Interface (WOPI) specifications.

It enables ScienceMesh EFSS storages to integrate Office Online platforms including Microsoft Office Online and Collabora Online, as well as other apps like CodiMD with dedicated extensions.

Author: Giuseppe Lo Presti (@glpatcern) <br/>
Contributions: Michael DSilva (@madsi1m), Lovisa Lugnegaard (@LovisaLugnegard), Samuel Alfageme (@SamuAlfageme), Ishank Arora (@ishank011)

Initial revision: December 2016 <br/>
First production version for CERNBox: September 2017 <br/>
First production version for CERNBox: September 2017 (presented at [oCCon17](https://occon17.owncloud.org) - [slides](https://www.slideshare.net/giuseppelopresti/collaborative-editing-and-more-in-cernbox))<br/>
Integration in the CS3 Organisation: April 2020

This project has been presented at the [ownCloud Conference 2017](https://occon17.owncloud.org).
Slides available at [slideshare.net](https://www.slideshare.net/giuseppelopresti/collaborative-editing-and-more-in-cernbox).

## Modules

* [core](src/core/readme.md)
* [bridge](src/bridge/readme.md)

## Changelog

[Available here](CHANGELOG.md)


## Unit testing

The `/test` folder contains some unit tests for the supported storage interfaces.
Expand Down Expand Up @@ -46,6 +51,8 @@ By default, the local storage is tested. To run the tests, use the standard pyth

## Test the `open` workflow with Reva

_Note: this test workflow is now deprecated and the Reva CLI should be used instead._

1. Run Reva as detailed above
2. Login with `reva login`
3. Extract (from the logs) your `x-access-token`
Expand Down
88 changes: 88 additions & 0 deletions codinet.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# docker-compose configuration file for CodiMD + Postgres + WOPI bridge
#
# Build with: docker-compose -f codinet.yaml build
# Run with: DBPWD='yourdbpassword' HOST='https://yourserver' docker-compose -f codimd.yaml up -d
#

version: "3.1"
services:
database:
image: postgres:11.6-alpine
container_name: codimd-postgres
hostname: cbox-codimd-postgres
environment:
- POSTGRES_USER=codimd
- POSTGRES_PASSWORD=${DBPWD}
- POSTGRES_DB=codimd
network_mode: codinet
volumes:
- "database-data:/var/lib/postgresql/data"
restart: always
frontend:
image: gitlab-registry.cern.ch/authoring/notes/codimd:cernbox-integration
container_name: codimd-web
hostname: cbox-codimd-web
environment:
- CMD_DB_URL=postgres://codimd:${DBPWD}@codimd-postgres/codimd
- CMD_AUTO_VERSION_CHECK=false
- CMD_ALLOW_ANONYMOUS=true
- CMD_ALLOW_ANONYMOUS_EDITS=true
- CMD_ALLOW_ANONYMOUS_VIEWS=true
- CMS_ALLOW_FREEURL=true
- CMD_EMAIL=false
- CMD_ALLOW_EMAIL_REGISTER=false
- CMD_USESSL=true
- NODE_TLS_REJECT_UNAUTHORIZED=0
- CMD_APPLIANCE_MODE=true
- CMD_SAVE_WEBHOOK=https://codimd-wopi.codinet:8000/wopib/save
depends_on:
- database
ports:
- 3000:3000
secrets:
- cert.pem
- key.pem
- dhparam.pem
network_mode: codinet
restart: always
wopibridge:
build:
context: .
dockerfile: wopibridge-poc.Dockerfile
image: wopibridge-poc:cern
container_name: codimd-wopi
hostname: cbox-codimd-wopi
environment:
- CODIMD_INT_URL=https://codimd-web.codinet:3000
- CODIMD_EXT_URL=${HOST}:3000
depends_on:
- frontend
ports:
- 8000:8000
volumes:
- logs:/var/log/wopi
secrets:
- cert.pem
- key.pem
network_mode: codinet
restart: always
healthcheck:
test: ["CMD", "curl", "--insecure", "https://localhost:8000"]
interval: 600s
timeout: 5s
retries: 3

volumes:
database-data: {}
logs: {}

networks:
codinet:

secrets:
cert.pem:
file: /etc/grid-security/hostcert.pem
key.pem:
file: /etc/grid-security/hostkey.pem
dhparam.pem:
file: ./dhparams.pem
Loading

0 comments on commit 8a09854

Please sign in to comment.