diff --git a/.gitignore b/.gitignore index fe2f55b1..9c263623 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,5 @@ /build/*.log /web/documentserver-example/csharp-mvc/packages /web/documentserver-example/nodejs/node_modules -/web/documentserver-example/nodejs/public/__ffff_127.0.0.1 +/web/documentserver-example/nodejs/public/files **/.idea \ No newline at end of file diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index ce91303a..9e1465b8 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -261,17 +261,13 @@ app.post("/track", function (req, res) { var historyPath = docManager.historyPath(fileName, userAddress); if (historyPath == "") { historyPath = docManager.historyPath(fileName, userAddress, true); - if (!fileSystem.existsSync(historyPath)) { - fileSystem.mkdirSync(historyPath); - } + docManager.createDirectory(historyPath); } var count_version = docManager.countVersion(historyPath); version = count_version + 1; versionPath = docManager.versionPath(fileName, userAddress, version); - if (!fileSystem.existsSync(versionPath)) { - fileSystem.mkdirSync(versionPath); - } + docManager.createDirectory(versionPath); var downloadZip = body.changesurl; if (downloadZip) { diff --git a/web/documentserver-example/nodejs/config/default.json b/web/documentserver-example/nodejs/config/default.json index da946f5c..a86c73fb 100644 --- a/web/documentserver-example/nodejs/config/default.json +++ b/web/documentserver-example/nodejs/config/default.json @@ -22,7 +22,7 @@ "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": "", + "storageFolder": "files", "haveExternalIp": false, "maxFileSize": 5242880 } diff --git a/web/documentserver-example/nodejs/helpers/docManager.js b/web/documentserver-example/nodejs/helpers/docManager.js index 23e603ea..d570cf41 100644 --- a/web/documentserver-example/nodejs/helpers/docManager.js +++ b/web/documentserver-example/nodejs/helpers/docManager.js @@ -45,11 +45,28 @@ docManager.dir = null; docManager.req = null; docManager.res = null; +docManager.existsSync = function(path) { + var res = true; + try { + fileSystem.accessSync(path, fileSystem.F_OK); + } catch (e) { + res = false; + } + return res; +}; +docManager.createDirectory = function(path) { + if (!this.existsSync(path)) { + fileSystem.mkdirSync(path); + } +}; + docManager.init = function (dir, req, res) { docManager.dir = dir; docManager.req = req; docManager.res = res; -} + + this.createDirectory(path.join(docManager.dir, "public", storageFolder)); +}; docManager.getLang = function () { if (docManager.req.query.lang) { @@ -57,7 +74,7 @@ docManager.getLang = function () { } else { return "en" } -} +}; docManager.getCustomParams = function () { var params = ""; @@ -84,7 +101,7 @@ docManager.getCustomParams = function () { params += (type ? "&type=" + type : ""); return params; -} +}; docManager.getCorrectName = function (fileName, userAddress) { var baseName = fileUtility.getFileName(fileName, true); @@ -92,13 +109,13 @@ docManager.getCorrectName = function (fileName, userAddress) { var name = baseName + ext; var index = 1; - while (fileSystem.existsSync(docManager.storagePath(name, userAddress))) { + while (this.existsSync(docManager.storagePath(name, userAddress))) { name = baseName + " (" + index + ")" + ext; index++; } return name; -} +}; docManager.createDemo = function (demoName, userid, username) { var fileName = docManager.getCorrectName(demoName); @@ -108,7 +125,7 @@ docManager.createDemo = function (demoName, userid, username) { docManager.saveFileData(fileName, userid, username); return fileName; -} +}; docManager.saveFileData = function (fileName, userid, username) { var userAddress = docManager.curUserHostAddress(); @@ -119,30 +136,27 @@ docManager.saveFileData = function (fileName, userid, username) { var date_format = date_create.getFullYear() + "-" + month + "-" + date_create.getDate() + " " + date_create.getHours() + ":" + minutes + ":" + sec; var file_info = docManager.historyPath(fileName, userAddress, true); - if (!fileSystem.existsSync(file_info)) { - fileSystem.mkdirSync(file_info); - } + this.createDirectory(file_info); fileSystem.writeFileSync(path.join(file_info, fileName + ".txt"), date_format + "," + userid + "," + username); -} +}; docManager.getFileData = function (fileName, userAddress) { var file_info = docManager.historyPath(fileName, userAddress, true); - if (!fileSystem.existsSync(file_info)) { + if (!this.existsSync(file_info)) { return ["2016-01-01", "uid-1", "John Smith"]; } return ((fileSystem.readFileSync(path.join(file_info, fileName + ".txt"))).toString()).split(","); -} +}; docManager.getFileUri = function (fileName) { if (configServer.get('haveExternalIp')) { - var filePath = docManager.getlocalFileUri(fileName); - return filePath; + return docManager.getlocalFileUri(fileName); } return docManager.getExternalUri(fileName); -} +}; docManager.getlocalFileUri = function (fileName, version) { var serverPath = docManager.getProtocol() + "://" + docManager.req.get("host"); @@ -153,11 +167,11 @@ docManager.getlocalFileUri = function (fileName, version) { return url; } return url + "-history/" + version; -} +}; docManager.getServerUrl = function () { return docManager.getProtocol() + "://" + docManager.req.get("host"); -} +}; docManager.getCallback = function (fileName) { var server = docManager.getProtocol() + "://" + docManager.req.get("host"); @@ -165,59 +179,55 @@ docManager.getCallback = function (fileName) { var handler = "/track?useraddress=" + encodeURIComponent(hostAddress) + "&filename=" + encodeURIComponent(fileName); return server + handler; -} +}; docManager.storagePath = function (fileName, userAddress) { var directory = path.join(docManager.dir, "public", storageFolder, docManager.curUserHostAddress(userAddress)); - if (!fileSystem.existsSync(directory)) { - fileSystem.mkdirSync(directory); - } + this.createDirectory(directory); return path.join(directory, fileName); -} +}; docManager.historyPath = function (fileName, userAddress, create) { var directory = path.join(docManager.dir, "public", storageFolder, docManager.curUserHostAddress(userAddress)); - if (!fileSystem.existsSync(directory)) { + if (!this.existsSync(directory)) { return ""; } directory = path.join(directory, fileName + "-history"); - if (!create && !fileSystem.existsSync(path.join(directory, "1"))) { + if (!create && !this.existsSync(path.join(directory, "1"))) { return ""; } return directory; -} +}; docManager.versionPath = function (fileName, userAddress, version) { var historyPath = docManager.historyPath(fileName, userAddress, true); return path.join(historyPath, "" + version); -} +}; docManager.prevFilePath = function (fileName, userAddress, version) { return path.join(docManager.versionPath(fileName, userAddress, version), "prev" + fileUtility.getFileExtension(fileName)); -} +}; docManager.diffPath = function (fileName, userAddress, version) { return path.join(docManager.versionPath(fileName, userAddress, version), "diff.zip"); -} +}; docManager.changesPath = function (fileName, userAddress, version) { return path.join(docManager.versionPath(fileName, userAddress, version), "changes.txt"); -} +}; docManager.keyPath = function (fileName, userAddress, version) { return path.join(docManager.versionPath(fileName, userAddress, version), "key.txt"); -} +}; docManager.changesUser = function (fileName, userAddress, version) { return path.join(docManager.versionPath(fileName, userAddress, version), "user.txt"); -} +}; docManager.getStoredFiles = function () { var directory = path.join(docManager.dir, "public", storageFolder, docManager.curUserHostAddress()); - if (!fileSystem.existsSync(directory)) { - return []; - } - var result = new Array(); + this.createDirectory(directory); + var result = []; var storedFiles = fileSystem.readdirSync(directory); for (var i = 0; i < storedFiles.length; i++) { if (!fileSystem.lstatSync(path.join(directory, storedFiles[i])).isDirectory()) { @@ -229,22 +239,22 @@ docManager.getStoredFiles = function () { } } return result; -} +}; docManager.getProtocol = function () { return docManager.req.headers["x-forwarded-proto"] || docManager.req.protocol; -} +}; docManager.curUserHostAddress = function (userAddress) { if (!userAddress) userAddress = docManager.req.headers["x-forwarded-for"] || docManager.req.connection.remoteAddress; return userAddress.replace(new RegExp("[^0-9a-zA-Z.=]", "g"), "_"); -} +}; docManager.copyFile = function (exist, target) { fileSystem.writeFileSync(target, fileSystem.readFileSync(exist)); -} +}; docManager.getExternalUri = function (fileName) { var documentRevisionId = docManager.getKey(fileName); @@ -265,7 +275,7 @@ docManager.getExternalUri = function (fileName) { catch (ex) { throw ex; } -} +}; docManager.getInternalExtension = function (fileType) { if (fileType == fileUtility.fileType.text) @@ -278,7 +288,7 @@ docManager.getInternalExtension = function (fileType) { return ".pptx"; return ".docx"; -} +}; docManager.getKey = function (fileName) { var userAddress = docManager.curUserHostAddress(); @@ -290,20 +300,20 @@ docManager.getKey = function (fileName) { } return documentService.generateRevisionId(key); -} +}; docManager.getDate = function (date) { var minutes = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes().toString(); return date.getMonth() + "/" + date.getDate() + "/" + date.getFullYear() + " " + date.getHours() + ":" + minutes; -} +}; docManager.getChanges = function (fileName) { return JSON.parse(fileSystem.readFileSync(fileName)); -} +}; -docManager.countVersion = function (directory) { +docManager.countVersion = function(directory) { var i = 0; - while (fileSystem.existsSync(path.join(directory, '' + (i + 1)))) { + while (this.existsSync(path.join(directory, '' + (i + 1)))) { i++; } return i; @@ -311,14 +321,13 @@ docManager.countVersion = function (directory) { docManager.getHistory = function (fileName, content, keyVersion, version) { var contentJson = content ? content[0] : null; - var history = {}; var userAddress = docManager.curUserHostAddress(); var username = content ? contentJson.username : (docManager.getFileData(fileName, userAddress))[2]; var userid = content ? contentJson.userid : (docManager.getFileData(fileName, userAddress))[1]; var date = content ? contentJson.date : (docManager.getFileData(fileName, userAddress))[0]; - history = { + return { key: keyVersion, version: version, created: date, @@ -328,8 +337,6 @@ docManager.getHistory = function (fileName, content, keyVersion, version) { }, changes: content }; - - return history; }; module.exports = docManager; diff --git a/web/documentserver-example/nodejs/package.json b/web/documentserver-example/nodejs/package.json index 69a0b396..95e952e5 100644 --- a/web/documentserver-example/nodejs/package.json +++ b/web/documentserver-example/nodejs/package.json @@ -15,7 +15,7 @@ "config": "^1.19.0", "debug": "~2.0.0", "ejs": "~1.0.0", - "express": "~4.9.0", + "express": "^4.13.4", "formidable": "~1.0.16", "log4js": "^0.6.31", "serve-favicon": "~2.1.3",