Compare commits

...

12 Commits

Author SHA1 Message Date
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
10 changed files with 60 additions and 21 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);

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) {