add config module

This commit is contained in:
Alexander.Trofimov
2016-03-24 13:41:15 +03:00
parent dfa06d1c89
commit f5e7a8bcdd
9 changed files with 79 additions and 60 deletions

View File

@ -30,7 +30,7 @@ var bodyParser = require("body-parser");
var fileSystem = require("fs");
var formidable = require("formidable");
var syncRequest = require("sync-request");
var config = require("./config");
var configServer = require('config').get('server');
var docManager = require("./helpers/docManager");
var documentService = require("./helpers/documentService");
var fileUtility = require("./helpers/fileUtility");
@ -84,9 +84,9 @@ app.get("/", function (req, res) {
docManager.init(__dirname, req, res);
res.render("index", {
preloaderUrl: config.preloaderUrl,
convertExts: config.convertedDocs.join(","),
editedExts: config.editedDocs.join(","),
preloaderUrl: configServer.get('siteUrl') + configServer.get('preloaderUrl'),
convertExts: configServer.get('convertedDocs').join(","),
editedExts: configServer.get('editedDocs').join(","),
storedFiles: docManager.getStoredFiles(),
params: docManager.getCustomParams()
});
@ -105,7 +105,7 @@ app.post("/upload", function (req, res) {
docManager.storagePath(""); //mkdir if not exist
var userIp = docManager.curUserHostAddress();
var uploadDir = "./public/" + config.storageFolder + "/" + userIp;
var uploadDir = "./public/" + configServer.get('storageFolder') + "/" + userIp;
var form = new formidable.IncomingForm();
form.uploadDir = uploadDir;
@ -117,7 +117,7 @@ app.post("/upload", function (req, res) {
file.name = docManager.getCorrectName(file.name);
if (config.maxFileSize < file.size || file.size <= 0) {
if (configServer.get('maxFileSize') < file.size || file.size <= 0) {
fileSystem.unlinkSync(file.path);
res.writeHead(200, { "Content-Type": "text/plain" });
res.write("{ \"error\": \"File size is incorrect\"}");
@ -125,7 +125,7 @@ app.post("/upload", function (req, res) {
return;
}
var exts = new Array().concat(config.viewedDocs, config.editedDocs, config.convertedDocs);
var exts = [].concat(configServer.get('viewedDocs'), configServer.get('editedDocs'), configServer.get('convertedDocs'));
var curExt = fileUtility.getFileExtension(file.name);
if (exts.indexOf(curExt) == -1) {
@ -214,7 +214,7 @@ app.get("/convert", function (req, res) {
}
try {
if (config.convertedDocs.indexOf(fileExt) != -1) {
if (configServer.get('convertedDocs').indexOf(fileExt) != -1) {
var key = documentService.generateRevisionId(fileUri);
var res = documentService.getConvertedUriAsync(fileUri, fileExt, internalFileExt, key, callback);
} else {
@ -365,7 +365,7 @@ app.get("/editor", function (req, res) {
var url = docManager.getFileUri(fileName);
var mode = req.query.mode || "edit"; //mode: view/edit
var type = req.query.type || "desktop"; //type: embedded/mobile/desktop
var canEdit = config.editedDocs.indexOf(fileUtility.getFileExtension(fileName)) != -1;
var canEdit = configServer.get('editedDocs').indexOf(fileUtility.getFileExtension(fileName)) != -1;
var historyPath = docManager.historyPath(fileName, userAddress);
var countVersion = 1;
@ -398,7 +398,7 @@ app.get("/editor", function (req, res) {
history.push(docManager.getHistory(fileName, changes, key, countVersion));
var argss = {
apiUrl: config.apiUrl,
apiUrl: configServer.get('apiUrl'),
file: {
name: fileName,
ext: fileUtility.getFileExtension(fileName, true),

View File

@ -1,8 +1,9 @@
#!/usr/bin/env node
var debug = require("debug")("OnlineEditorsExampleNodeJS");
var app = require("../app");
var config = require('config');
app.set("port", process.env.PORT || 3000);
app.set("port", process.env.PORT || config.get('server.port') || 3000);
var server = app.listen(app.get("port"), function() {
debug("Express server listening on port " + server.address().port);

View File

@ -1,19 +0,0 @@
var config = {}
config.maxFileSize = 5242880;
config.storageFolder = "";
config.viewedDocs = [".ppt", ".pps", ".odp", ".pdf", ".djvu", ".epub", ".xps"];
config.editedDocs = [".docx", ".doc", ".odt", ".xlsx", ".xls", ".ods", ".csv", ".pptx", ".ppsx", ".rtf", ".txt", ".mht", ".html", ".htm"];
config.convertedDocs = [".doc", ".odt", ".xls", ".ods", ".ppt", ".pps", ".odp", ".rtf", ".mht", ".html", ".htm", ".epub"];
config.commandUrl = "https://doc.onlyoffice.com/coauthoring/CommandService.ashx";
config.storageUrl = "https://doc.onlyoffice.com/FileUploader.ashx";
config.converterUrl = "https://doc.onlyoffice.com/ConvertService.ashx";
config.tempStorageUrl = "https://doc.onlyoffice.com/ResourceService.ashx";
config.apiUrl = "https://doc.onlyoffice.com/OfficeWeb/apps/api/documents/api.js";
config.preloaderUrl = "https://doc.onlyoffice.com/OfficeWeb/apps/api/documents/cache-scripts.html";
config.haveExternalIp = false; //service can access the document on the url
module.exports = config;

View File

@ -0,0 +1,29 @@
{
"log": {
"appenders": [
{
"type": "console"
}
],
"replaceConsole": "true",
"levels": {
"nodeJS": "Debug"
}
},
"server": {
"port": 3000,
"siteUrl": "https://doc.onlyoffice.com/",
"commandUrl": "coauthoring/CommandService.ashx",
"storageUrl": "FileUploader.ashx",
"converterUrl": "ConvertService.ashx",
"tempStorageUrl": "ResourceService.ashx",
"apiUrl": "office/apps/api/documents/api.js",
"preloaderUrl": "office/apps/api/documents/cache-scripts.html",
"viewedDocs": [".ppt", ".pps", ".odp", ".pdf", ".djvu", ".epub", ".xps"],
"editedDocs": [".docx", ".doc", ".odt", ".xlsx", ".xls", ".ods", ".csv", ".pptx", ".ppsx", ".rtf", ".txt", ".mht", ".html", ".htm"],
"convertedDocs": [".doc", ".odt", ".xls", ".ods", ".ppt", ".pps", ".odp", ".rtf", ".mht", ".html", ".htm", ".epub"],
"storageFolder": "",
"haveExternalIp": false,
"maxFileSize": 5242880
}
}

View File

@ -29,7 +29,8 @@ var fileUtility = require("./fileUtility");
var documentService = require("./documentService");
var cacheManager = require("./cacheManager");
var guidManager = require("./guidManager");
var config = require("../config");
var configServer = require('config').get('server');
var storageFolder = configServer.get('storageFolder');
var os = require("os");
const readline = require('readline');
@ -135,7 +136,7 @@ docManager.getFileData = function (fileName, userAddress) {
}
docManager.getFileUri = function (fileName) {
if (config.haveExternalIp) {
if (configServer.get('haveExternalIp')) {
var filePath = docManager.getlocalFileUri(fileName);
return filePath;
}
@ -145,7 +146,7 @@ docManager.getFileUri = function (fileName) {
docManager.getlocalFileUri = function (fileName, version) {
var serverPath = docManager.getProtocol() + "://" + docManager.req.get("host");
var storagePath = config.storageFolder.length ? config.storageFolder + "/" : "";
var storagePath = storageFolder.length ? storageFolder + "/" : "";
var hostAddress = docManager.curUserHostAddress();
var url = serverPath + "/" + storagePath + hostAddress + "/" + encodeURIComponent(fileName);
if (!version) {
@ -167,7 +168,7 @@ docManager.getCallback = function (fileName) {
}
docManager.storagePath = function (fileName, userAddress) {
var directory = path.join(docManager.dir, "public", config.storageFolder, docManager.curUserHostAddress(userAddress));
var directory = path.join(docManager.dir, "public", storageFolder, docManager.curUserHostAddress(userAddress));
if (!fileSystem.existsSync(directory)) {
fileSystem.mkdirSync(directory);
}
@ -175,7 +176,7 @@ docManager.storagePath = function (fileName, userAddress) {
}
docManager.historyPath = function (fileName, userAddress, create) {
var directory = path.join(docManager.dir, "public", config.storageFolder, docManager.curUserHostAddress(userAddress));
var directory = path.join(docManager.dir, "public", storageFolder, docManager.curUserHostAddress(userAddress));
if (!fileSystem.existsSync(directory)) {
return "";
}
@ -212,7 +213,7 @@ docManager.changesUser = function (fileName, userAddress, version) {
}
docManager.getStoredFiles = function () {
var directory = path.join(docManager.dir, "public", config.storageFolder, docManager.curUserHostAddress());
var directory = path.join(docManager.dir, "public", storageFolder, docManager.curUserHostAddress());
if (!fileSystem.existsSync(directory)) {
return [];
}

View File

@ -26,12 +26,12 @@
var path = require("path");
var urllib = require("urllib");
var syncRequest = require("sync-request");
var fileSystem = require("fs");
var xml2js = require("xml2js");
var fileUtility = require("./fileUtility");
var cacheManager = require("./cacheManager");
var guidManager = require("./guidManager");
var config = require("../config");
var configServer = require('config').get('server');
var siteUrl = configServer.get('siteUrl');
var documentService = {};
@ -45,7 +45,7 @@ documentService.getConvertedUri = function (documentUri, fromExtension, toExtens
var res = documentService.getResponseUri(xml);
return res.value;
}
};
documentService.getConvertedUriAsync = function (documentUri, fromExtension, toExtension, documentRevisionId, callback) {
fromExtension = fromExtension || fileUtility.getFileExtension(documentUri);
@ -61,13 +61,13 @@ documentService.getConvertedUriAsync = function (documentUri, fromExtension, toE
title,
documentRevisionId);
urllib.request(config.converterUrl + params, callback);
}
urllib.request(siteUrl + configServer.get('converterUrl') + params, callback);
};
documentService.getExternalUri = function (fileStream, contentLength, contentType, documentRevisionId) {
var params = documentService.convertParams.format("", "", "", "", documentRevisionId);
var urlTostorage = config.storageUrl + params;
var urlTostorage = siteUrl + configServer.get('storageUrl') + params;
var response = syncRequest("POST", urlTostorage, {
headers: {
@ -81,7 +81,7 @@ documentService.getExternalUri = function (fileStream, contentLength, contentTyp
var res = documentService.getResponseUri(response.body.toString());
return res.value;
}
};
documentService.generateRevisionId = function (expectedKey) {
if (expectedKey.length > 20) {
@ -91,7 +91,7 @@ documentService.generateRevisionId = function (expectedKey) {
var key = expectedKey.replace(new RegExp("[^0-9-.a-zA-Z_=]", "g"), "_");
return key.substring(0, Math.min(key.length, 20));
}
};
documentService.sendRequestToConvertService = function (documentUri, fromExtension, toExtension, documentRevisionId) {
fromExtension = fromExtension || fileUtility.getFileExtension(documentUri);
@ -107,9 +107,9 @@ documentService.sendRequestToConvertService = function (documentUri, fromExtensi
title,
documentRevisionId);
var res = syncRequest("GET", config.converterUrl + params);
var res = syncRequest("GET", siteUrl + configServer.get('converterUrl') + params);
return res.getBody("utf8");
}
};
documentService.processConvertServiceResponceError = function (errorCode) {
var errorMessage = "";
@ -151,7 +151,7 @@ documentService.processConvertServiceResponceError = function (errorCode) {
}
throw { message: errorMessage };
}
};
documentService.getResponseUri = function (xml) {
var json = documentService.convertXmlStringToJson(xml);
@ -189,7 +189,7 @@ documentService.getResponseUri = function (xml) {
key: percent,
value: uri
};
}
};
documentService.convertXmlStringToJson = function (xml) {
var res;
@ -199,7 +199,7 @@ documentService.convertXmlStringToJson = function (xml) {
});
return res;
}
};
documentService.commandRequest = function (method, documentRevisionId) {
documentRevisionId = documentService.generateRevisionId(documentRevisionId);
@ -207,8 +207,8 @@ documentService.commandRequest = function (method, documentRevisionId) {
method,
documentRevisionId);
var res = syncRequest("GET", config.commandUrl + params).getBody("utf8");
var res = syncRequest("GET", siteUrl + configServer.get('commandUrl') + params).getBody("utf8");
return JSON.parse(res).error;
}
};
module.exports = documentService;

View File

@ -23,7 +23,9 @@
*
*/
var config = require("../config");
var configServer = require('config').get('server');
var siteUrl = configServer.get('siteUrl');
var tempStorageUrl = siteUrl + configServer.get('tempStorageUrl');
var fileUtility = {};
@ -32,7 +34,7 @@ fileUtility.getFileName = function (url, withoutExtension) {
var filename;
if (config.tempStorageUrl && url.indexOf(config.tempStorageUrl) == 0) {
if (tempStorageUrl && url.indexOf(tempStorageUrl) == 0) {
var params = getUrlParams(url);
filename = params == null ? null : params["filename"];
} else {

View File

@ -11,14 +11,16 @@
"email": ""
},
"dependencies": {
"express": "~4.9.0",
"body-parser": "~1.8.1",
"serve-favicon": "~2.1.3",
"config": "^1.19.0",
"debug": "~2.0.0",
"ejs": "~1.0.0",
"express": "~4.9.0",
"formidable": "~1.0.16",
"xml2js": "~0.4.4",
"log4js": "^0.6.31",
"serve-favicon": "~2.1.3",
"sync-request": "~1.0.2",
"urllib": "~2.2.1",
"sync-request": "~1.0.2"
"xml2js": "~0.4.4"
}
}

View File

@ -6,6 +6,9 @@ ECHO Install node.js modules
ECHO ----------------------------------------
call npm install
start /min /b node bin/www
pause
ECHO.
ECHO ----------------------------------------
ECHO Run server
ECHO ----------------------------------------
SET NODE_CONFIG_DIR=%~dp0\config
start /min /b node bin/www