diff --git a/node/importexport.js b/node/importexport.js new file mode 100644 index 00000000..b53447da --- /dev/null +++ b/node/importexport.js @@ -0,0 +1,41 @@ +var hasPadAccess = require("./padaccess"); +var settings = require('./utils/Settings'); +var exportHandler = require('./handler/ExportHandler'); +var importHandler = require('./handler/ImportHandler'); + +exports.expressCreateServer = function (hook_name, args, cb) { + args.app.get('/p/:pad/:rev?/export/:type', function(req, res, next) { + var types = ["pdf", "doc", "txt", "html", "odt", "dokuwiki"]; + //send a 404 if we don't support this filetype + if (types.indexOf(req.params.type) == -1) { + next(); + return; + } + + //if abiword is disabled, and this is a format we only support with abiword, output a message + if (settings.abiword == null && + ["odt", "pdf", "doc"].indexOf(req.params.type) !== -1) { + res.send("Abiword is not enabled at this Etherpad Lite instance. Set the path to Abiword in settings.json to enable this feature"); + return; + } + + res.header("Access-Control-Allow-Origin", "*"); + + hasPadAccess(req, res, function() { + exportHandler.doExport(req, res, req.params.pad, req.params.type); + }); + }); + + //handle import requests + args.app.post('/p/:pad/import', function(req, res, next) { + //if abiword is disabled, skip handling this request + if(settings.abiword == null) { + next(); + return; + } + + hasPadAccess(req, res, function() { + importHandler.doImport(req, res, req.params.pad); + }); + }); +} diff --git a/node/server.js b/node/server.js index b3a36c2c..f97afd0f 100644 --- a/node/server.js +++ b/node/server.js @@ -118,49 +118,6 @@ async.waterfall([ gracefulShutdown(); }); - //serve timeslider.html under /p/$padname/timeslider - app.get('/p/:pad/:rev?/export/:type', function(req, res, next) - { - var types = ["pdf", "doc", "txt", "html", "odt", "dokuwiki"]; - //send a 404 if we don't support this filetype - if(types.indexOf(req.params.type) == -1) - { - next(); - return; - } - - //if abiword is disabled, and this is a format we only support with abiword, output a message - if(settings.abiword == null && - ["odt", "pdf", "doc"].indexOf(req.params.type) !== -1) - { - res.send("Abiword is not enabled at this Etherpad Lite instance. Set the path to Abiword in settings.json to enable this feature"); - return; - } - - res.header("Access-Control-Allow-Origin", "*"); - - hasPadAccess(req, res, function() - { - exportHandler.doExport(req, res, req.params.pad, req.params.type); - }); - }); - - //handle import requests - app.post('/p/:pad/import', function(req, res, next) - { - //if abiword is disabled, skip handling this request - if(settings.abiword == null) - { - next(); - return; - } - - hasPadAccess(req, res, function() - { - importHandler.doImport(req, res, req.params.pad); - }); - }); - //let the server listen app.listen(settings.port, settings.ip); diff --git a/pluginomatic.json b/pluginomatic.json index 498384e2..996aacdc 100644 --- a/pluginomatic.json +++ b/pluginomatic.json @@ -6,7 +6,8 @@ { "name": "minified", "hooks": { "expressCreateServer": "../minified:expressServer" } }, { "name": "padreadonly", "hooks": { "expressCreateServer": "../padreadonly:expressServer" } }, { "name": "webaccess", "hooks": { "expressConfigure": "../webaccess:expressConfigure" } }, - { "name": "apicalls", "hooks": { "expressCreateServer": "../apicalls:expressCreateServer" } } + { "name": "apicalls", "hooks": { "expressCreateServer": "../apicalls:expressCreateServer" } }, + { "name": "importexport", "hooks": { "expressCreateServer": "../importexport:expressCreateServer" } } ] }