109 lines
4.2 KiB
Markdown
109 lines
4.2 KiB
Markdown
# OnlyOffice connector plugin for Twake Drive
|
|
|
|
This server sits between the backend server of Twake Drive, and the document editing service of OnlyOffice.
|
|
|
|
Documentation of the [API used with OnlyOffice is here](https://api.onlyoffice.com/editors/howitworks).
|
|
|
|
## Running principle
|
|
|
|
- The connector is added as a plugin application to Twake Drive's configuration
|
|
- When a user
|
|
- Creates a file from the templates
|
|
- The file is downloaded by the browser, proxied through the frontend and then backend, to the connector's static assets.
|
|
- The file is then created in Twake Drive by the browser, as any normal file would be
|
|
- Edits or Previews a file that matches the extensions in the configuration of Twake Drive's backend
|
|
- Twake Drive creates a JWT for the current user, then opens in an IFrame either the edit or preview URLs from the configuration.
|
|
- These should point to something ultimately proxied to the view's routes in this connector's `IndexController`
|
|
- The view instantiates [the JS client DocsAPI](https://api.onlyoffice.com/editors/advanced), providing it with URLs to read and write the document. This JS is served directly from the OnlyOffice server which must be accessible to client browsers.
|
|
- The inline configuration provides a read and a write URL to the DocsAPI editor, these point to the routes of `OnlyOfficeController`.
|
|
- When all the clients have disconnected from the editing session on the OnlyOffice document editing service, the OnlyOffice server will call the `callbackUrl` of this connector.
|
|
- The connector then downloads the new file from Only Office, and creates a new version in Twake Drive.
|
|
- Periodically gets a list of forgotten files and updates the backend with them
|
|
|
|
## Configuration example
|
|
|
|
Let's assume the servers can be contacted at (all but the backend are called directly by the user browser at the same URL as internal calls are made):
|
|
|
|
- Twake Drive backend: http://backend:4000
|
|
- This connector: http://plugins_onlyoffice:5000
|
|
- OnlyOffice: http://onlyoffice:8090
|
|
|
|
### Environment variables for running the connector
|
|
|
|
- `SERVER_PORT=5000`
|
|
- `SERVER_PREFIX=/plugins/onlyoffice/`
|
|
- `CREDENTIALS_ENDPOINT=http://backend/`
|
|
- `ONLY_OFFICE_SERVER=https://onlyoffice/`
|
|
- `CREDENTIALS_ID=tdrive_onlyoffice`
|
|
- `CREDENTIALS_SECRET=apisecret`
|
|
|
|
### Backend configuration `/backend/node/config/{env}.json`
|
|
|
|
```json
|
|
{
|
|
"applications": {
|
|
"plugins": [
|
|
{
|
|
"id": "tdrive_onlyoffice",
|
|
"internal_domain": "http://plugins_onlyoffice:5000/",
|
|
"external_prefix": "/plugins/onlyoffice/",
|
|
"api": {
|
|
"private_key": "apisecret"
|
|
},
|
|
"display": {
|
|
"tdrive": {
|
|
"version": 1,
|
|
"files": {
|
|
"editor": {
|
|
"preview_url": "/plugins/onlyoffice/?preview=1",
|
|
"edition_url": "/plugins/onlyoffice/",
|
|
"empty_files": [
|
|
{
|
|
"url": "/plugins/onlyoffice/assets/empty.docx",
|
|
"filename": "Untitled.docx",
|
|
"name": "ONLYOFFICE Word Document"
|
|
},
|
|
{
|
|
"url": "/plugins/onlyoffice/assets/empty.xlsx",
|
|
"filename": "Untitled.xlsx",
|
|
"name": "ONLYOFFICE Excel Document"
|
|
},
|
|
{
|
|
"url": "/plugins/onlyoffice/assets/empty.pptx",
|
|
"filename": "Untitled.pptx",
|
|
"name": "ONLYOFFICE PowerPoint Document"
|
|
}
|
|
],
|
|
"extensions": [
|
|
"xlsx",
|
|
"pptx",
|
|
"docx",
|
|
"xls",
|
|
"ppt",
|
|
"doc",
|
|
"odt",
|
|
"ods",
|
|
"odp",
|
|
"txt",
|
|
"html",
|
|
"csv"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"identity": {
|
|
"code": "only_office",
|
|
"name": "Only Office",
|
|
"icon": "/plugins/onlyoffice/assets/logo.png",
|
|
"description": null,
|
|
"website": "http://twake.app/",
|
|
"categories": [],
|
|
"compatibility": ["tdrive"]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|