]> git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/blobdiff - server.js
Stop polluting logs with healthcheck
[perso/Immae/Projets/Nodejs/Surfer.git] / server.js
index 620610357e09b4e62c1ee281af4a10116285433e..052e28ea39c5f938f6f287b4498b40f78000764d 100755 (executable)
--- a/server.js
+++ b/server.js
@@ -2,10 +2,8 @@
 
 'use strict';
 
-
 var express = require('express'),
     morgan = require('morgan'),
-    passport = require('passport'),
     path = require('path'),
     fs = require('fs'),
     compression = require('compression'),
@@ -19,6 +17,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,28 +62,39 @@ 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);
 router.post  ('/api/logout', auth.verify, auth.logout);
 router.get   ('/api/settings', auth.verify, getSettings);
 router.put   ('/api/settings', auth.verify, setSettings);
+router.get   ('/api/tokens', auth.verify, auth.getTokens);
+router.post  ('/api/tokens', auth.verify, auth.createToken);
+router.delete('/api/tokens/:token', auth.verify, auth.delToken);
 router.get   ('/api/profile', auth.verify, auth.getProfile);
 router.get   ('/api/files/*', auth.verify, files.get);
 router.post  ('/api/files/*', auth.verify, multipart, files.post);
 router.put   ('/api/files/*', auth.verify, files.put);
 router.delete('/api/files/*', auth.verify, files.del);
-router.get   ('/api/healthcheck', function (req, res) { res.status(200).send(); });
 
+app.use('/api/healthcheck', function (req, res) { res.status(200).send(); });
 app.use(morgan('dev'));
 app.use(compression());
 app.use('/api', bodyParser.json());
 app.use('/api', bodyParser.urlencoded({ extended: false, limit: '100mb' }));
 app.use('/api', cookieParser());
 app.use('/api', session({ secret: 'surfin surfin', resave: false, saveUninitialized: false }));
-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());