Compare commits

..

21 Commits

Author SHA1 Message Date
1217de89b3 Add 'blockcontent' mode 2019-09-04 18:15:06 +03:00
118a4d74b0 v5.4.0 2019-09-03 14:37:39 +03:00
88fa94c090 Update new file templates 2019-08-02 14:28:32 +03:00
507bf0098a Fixed package.json. Added new line at end of the file. 2019-07-31 18:17:27 +03:00
9bbcdf599d Use npm-shrinkwrap 2019-07-31 17:53:16 +03:00
d4f07aee2a update empty files (v16) 2019-07-30 12:59:49 +03:00
d12897930c Expanded list of languages
https://helpcenter.onlyoffice.com/tipstricks/available-languages.aspx
2019-06-13 17:03:40 +03:00
314dfb7811 v5.3.1 2019-06-06 12:33:52 +03:00
f5b4a1f78d v5.3.0 2019-05-27 17:21:45 +03:00
9459d4a7c1 v5.3.0 2019-05-27 17:05:25 +03:00
120a0712da Update Readme.md
UTM for Project info
2019-05-16 18:13:12 +03:00
a536fdf6ab nodejs: max key length - 120 2019-02-22 15:54:07 +03:00
71103b802e java: send jwt token in body 2019-02-21 14:27:59 +03:00
0b33ce14f7 node: fix Bug 36489 - Files with non ascii symbols were unable to download 2019-02-21 11:47:51 +03:00
a945870c6a java: jwt in headers 2019-02-20 14:55:35 +03:00
cafaa27e92 java: json passed to docserver contained escaped parameters 2019-02-20 14:50:38 +03:00
d22d2ace22 Merge pull request #57 from flaminestone/feature/delete_dockerfile
Delete dockerfile, and move building to docker-compose
2019-02-13 16:27:48 +03:00
430a16b543 Delete dockerfile, and move building to docker-compose 2019-02-13 16:17:41 +03:00
d2a89f4a5f Merge pull request #56 from flaminestone/feature/add_docker_compose_for_java
Add docker-compose file for easy building
2019-02-13 13:43:35 +03:00
efda987b55 Add docker-compose file for easy building 2019-02-13 13:34:20 +03:00
20827e4d76 v5.2.8 2019-02-05 16:23:22 +03:00
21 changed files with 91 additions and 31 deletions

View File

@ -17,11 +17,11 @@ More information on how to use these examples can be found here: [http://api.onl
## Project Information
Official website: [http://www.onlyoffice.org](http://onlyoffice.org "http://www.onlyoffice.org")
Official website: [https://www.onlyoffice.com](https://www.onlyoffice.com/?utm_source=github&utm_medium=cpc&utm_campaign=GitHubIntegrationEx)
Code repository: [https://github.com/ONLYOFFICE/document-server-integration](https://github.com/ONLYOFFICE/document-server-integration "https://github.com/ONLYOFFICE/document-server-integration")
SaaS version: [http://www.onlyoffice.com](http://www.onlyoffice.com "http://www.onlyoffice.com")
ONLYOFFICE for developers: [https://www.onlyoffice.com/developer-edition.aspx](https://www.onlyoffice.com/developer-edition.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubIntegrationEx)
## User Feedback and Support

View File

@ -1,9 +0,0 @@
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y software-properties-common \
python-software-properties
RUN add-apt-repository -y ppa:webupd8team/java
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
RUN apt-get update && apt-get install -y oracle-java8-installer \
maven
COPY . /java
CMD mvn -f /java package

View File

@ -55,7 +55,6 @@ files.docservice.url.preloader=https://documentserver/web-apps/apps/api/document
Run next command in java example directory:
```
docker build . -t java-example
docker run -it -v $PWD/target:/java/target java-example
docker-compose up
```
After it, all bin files will be passed to `./target` folder

View File

@ -0,0 +1,7 @@
version: '3'
services:
build:
image: maven:3.6
volumes:
- .:/java
command: mvn -f /java package

View File

@ -27,6 +27,7 @@
package controllers;
import helpers.ConfigManager;
import helpers.DocumentManager;
import helpers.ServiceConverter;
import java.io.File;
@ -35,6 +36,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URL;
import java.util.LinkedHashMap;
import java.util.Scanner;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
@ -54,6 +56,8 @@ import org.primeframework.jwt.domain.JWT;
@MultipartConfig
public class IndexServlet extends HttpServlet
{
private static final String DocumentJwtHeader = ConfigManager.GetProperty("files.docservice.header");
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String action = request.getParameter("type");
@ -255,6 +259,11 @@ public class IndexServlet extends HttpServlet
{
String token = (String) jsonObj.get("token");
if (token == null) {
String header = (String) request.getHeader(DocumentJwtHeader == "" ? "Authorization" : DocumentJwtHeader);
token = header.startsWith("Bearer ") ? header.substring(7) : header;
}
JWT jwt = DocumentManager.ReadToken(token);
if (jwt == null)
{
@ -262,6 +271,19 @@ public class IndexServlet extends HttpServlet
return;
}
if (jwt.getObject("payload") != null) {
try {
@SuppressWarnings("unchecked") LinkedHashMap<String, Object> payload =
(LinkedHashMap<String, Object>)jwt.getObject("payload");
jwt.claims = payload;
}
catch (Exception ex) {
writer.write("Wrong payload");
return;
}
}
status = jwt.getInteger("status");
downloadUri = jwt.getString("url");
}

View File

@ -49,6 +49,7 @@ public class ServiceConverter
{
private static int ConvertTimeout = 120000;
private static final String DocumentConverterUrl = ConfigManager.GetProperty("files.docservice.url.converter");
private static final String DocumentJwtHeader = ConfigManager.GetProperty("files.docservice.header");
public static class ConvertBody
{
@ -96,6 +97,26 @@ public class ServiceConverter
if (isAsync)
body.async = true;
String headerToken = "";
if (DocumentManager.TokenEnabled())
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("url", body.url);
map.put("outputtype", body.outputtype);
map.put("filetype", body.filetype);
map.put("title", body.title);
map.put("key", body.key);
if (isAsync)
map.put("async", body.async);
String token = DocumentManager.CreateToken(map);
body.token = token;
Map<String, Object> payloadMap = new HashMap<String, Object>();
payloadMap.put("payload", map);
headerToken = DocumentManager.CreateToken(payloadMap);
}
Gson gson = new Gson();
String bodyString = gson.toJson(body);
@ -112,10 +133,7 @@ public class ServiceConverter
if (DocumentManager.TokenEnabled())
{
Map<String, Object> map = new HashMap<>();
map.put("payload", body);
String token = DocumentManager.CreateToken(map);
connection.setRequestProperty("Authorization", "Bearer " + token);
connection.setRequestProperty(DocumentJwtHeader == "" ? "Authorization" : DocumentJwtHeader, "Bearer " + headerToken);
}
connection.connect();

View File

@ -11,3 +11,4 @@ files.docservice.url.tempstorage=https://documentserver/ResourceService.ashx
files.docservice.url.api=https://documentserver/web-apps/apps/api/documents/api.js
files.docservice.url.preloader=https://documentserver/web-apps/apps/api/documents/cache-scripts.html
files.docservice.secret=
files.docservice.header=Authorization

View File

@ -71,7 +71,7 @@
};
var сonnectEditor = function () {
var config = <%= FileModel.Serialize(Model) %>;
var config = JSON.parse('<%= FileModel.Serialize(Model) %>');
config.width = "100%";
config.height = "100%";
config.events = {

View File

@ -132,7 +132,7 @@ app.get("/download", function(req, res) {
res.setHeader("Content-Length", fileSystem.statSync(path).size);
res.setHeader("Content-Type", mime.lookup(path));
res.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
res.setHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + encodeURIComponent(fileName));
var filestream = fileSystem.createReadStream(path);
filestream.pipe(res);
@ -616,11 +616,12 @@ app.get("/editor", function (req, res) {
key: key,
token: "",
callbackUrl: docManager.getCallback(fileName),
isEdit: canEdit && (mode == "edit" || mode == "filter"),
isEdit: canEdit && (mode == "edit" || mode == "filter" || mode == "blockcontent"),
review: mode == "edit" || mode == "review",
comment: mode != "view" && mode != "fillForms" && mode != "embedded",
fillForms: mode != "view" && mode != "comment" && mode != "embedded",
comment: mode != "view" && mode != "fillForms" && mode != "embedded" && mode != "blockcontent",
fillForms: mode != "view" && mode != "comment" && mode != "embedded" && mode != "blockcontent",
modifyFilter: mode != "filter",
modifyContentControl: mode != "blockcontent",
mode: canEdit && mode != "view" ? "edit" : "view",
canBackToFolder: type != "embedded",
backUrl: docManager.getServerUrl(),

View File

@ -93,13 +93,14 @@ documentService.getConvertedUri = function (documentUri, fromExtension, toExtens
};
documentService.generateRevisionId = function (expectedKey) {
if (expectedKey.length > 20) {
let maxKeyLength = 128;
if (expectedKey.length > maxKeyLength) {
expectedKey = expectedKey.hashCode().toString();
}
var key = expectedKey.replace(new RegExp("[^0-9-.a-zA-Z_=]", "g"), "_");
return key.substring(0, Math.min(key.length, 20));
return key.substring(0, Math.min(key.length, maxKeyLength));
};
documentService.processConvertServiceResponceError = function (errorCode) {

View File

@ -33,4 +33,4 @@
"type": "git",
"url": "git+https://github.com/ONLYOFFICE/document-server-integration.git"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 B

View File

@ -18,6 +18,7 @@
"edit": <%- editor.isEdit %>,
"fillForms": <%- editor.fillForms %>,
"modifyFilter": <%- editor.modifyFilter %>,
"modifyContentControl": <%- editor.modifyContentControl %>,
"review": <%- editor.review %>
}
},

View File

@ -64,13 +64,26 @@
<td valign="middle" width="30%">
<select class="select-user" id="language">
<option value="en">English</option>
<option value="de">Deutsch</option>
<option value="es">Espanol</option>
<option value="fr">Francais</option>
<option value="it">Italiano</option>
<option value="bg">Bulgarian</option>
<option value="zh">Chinese</option>
<option value="cs">Czech</option>
<option value="nl">Dutch</option>
<option value="fr">French</option>
<option value="de">German</option>
<option value="hu">Hungarian</option>
<option value="it">Italian</option>
<option value="ja">Japanese</option>
<option value="ko">Korean</option>
<option value="lv">Latvian</option>
<option value="pl">Polish</option>
<option value="pt">Portuguese</option>
<option value="ru">Русский</option>
<option value="ru">Russian</option>
<option value="sk">Slovak</option>
<option value="sl">Slovenian</option>
<option value="es">Spanish</option>
<option value="tr">Turkish</option>
<option value="uk">Ukrainian</option>
<option value="vi">Vietnamese</option>
</select>
</td>
<td valign="middle" width="70%">Choose the language for ONLYOFFICE&trade; editors interface.</td>
@ -167,12 +180,18 @@
<a href="editor?type=desktop&mode=comment&fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/comment-24.png" alt="Open in editor for comment" title="Open in editor for comment" /></a>
</td>
<td class="contentCells contentCells-shift contentCells-icon">
<td class="contentCells contentCells-icon">
<% if (storedFiles[i].documentType == "text") { %>
<a href="editor?type=desktop&mode=fillForms&fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/fill-forms-24.png" alt="Open in editor for filling in forms" title="Open in editor for filling in forms" /></a>
<% } %>
</td>
<td class="contentCells contentCells-shift contentCells-icon">
<% if (storedFiles[i].documentType == "text") { %>
<a href="editor?type=desktop&mode=blockcontent&fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/block-content.png" alt="Open in editor without content control modification" title="Open in editor without content control modification" /></a>
<% } %>
</td>
<% } else { %>
<td class="contentCells contentCells-shift contentCells-icon" colspan="5"></td>
<% } %>