]> git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/blobdiff - server.js
Put webdav under /_webdav to avoid name clash
[perso/Immae/Projets/Nodejs/Surfer.git] / server.js
index 620610357e09b4e62c1ee281af4a10116285433e..e3d92e1c4e2af49747bd8e7a39e583c6fe8858b5 100755 (executable)
--- a/server.js
+++ b/server.js
@@ -2,7 +2,6 @@
 
 'use strict';
 
-
 var express = require('express'),
     morgan = require('morgan'),
     passport = require('passport'),
@@ -19,6 +18,7 @@ var express = require('express'),
     mkdirp = require('mkdirp'),
     auth = require('./src/auth.js'),
     serveIndex = require('serve-index'),
+    webdav = require('webdav-server').v2,
     files = require('./src/files.js')(path.resolve(__dirname, process.argv[2] || 'files'));
 
 
@@ -63,6 +63,15 @@ if (typeof config.folderListingEnabled === 'undefined') config.folderListingEnab
 var app = express();
 var router = new express.Router();
 
+var webdavServer = new webdav.WebDAVServer({
+    requireAuthentification: true,
+    httpAuthentication: new webdav.HTTPBasicAuthentication(new auth.WebdavUserManager(), 'Cloudron Surfer')
+});
+
+webdavServer.setFileSystem('/', new webdav.PhysicalFileSystem(ROOT_FOLDER), function (success) {
+    console.log(`Mounting ${ROOT_FOLDER} as webdav resource`, success);
+});
+
 var multipart = multipart({ maxFieldsSize: 2 * 1024, limit: '512mb', timeout: 3 * 60 * 1000 });
 
 router.post  ('/api/login', auth.login);
@@ -85,6 +94,7 @@ app.use('/api', session({ secret: 'surfin surfin', resave: false, saveUninitiali
 app.use('/api', passport.initialize());
 app.use('/api', passport.session());
 app.use(router);
+app.use(webdav.extensions.express('/_webdav', webdavServer));
 app.use('/_admin', express.static(__dirname + '/frontend'));
 app.use('/', express.static(ROOT_FOLDER));
 app.use('/', function welcomePage(req, res, next) {
@@ -93,7 +103,7 @@ app.use('/', function welcomePage(req, res, next) {
 });
 app.use('/', function (req, res, next) {
     if (config.folderListingEnabled) return next();
-    res.sendFile(__dirname + '/frontend/404.html');
+    res.status(404).sendFile(__dirname + '/frontend/404.html');
 });
 app.use('/', serveIndex(ROOT_FOLDER, { icons: true }));
 app.use(lastMile());