diff options
author | Johannes Zellner <johannes@cloudron.io> | 2019-02-23 22:40:58 +0100 |
---|---|---|
committer | Johannes Zellner <johannes@cloudron.io> | 2019-02-23 22:40:58 +0100 |
commit | 7af3d8556de81996d476d92807928fafdc91c41b (patch) | |
tree | 379922954ee45cd23cb25cb955ab1220ed2924ce /server.js | |
parent | a7317b4ba7e4f37ab1e562669c03e4867c070d39 (diff) | |
download | Surfer-7af3d8556de81996d476d92807928fafdc91c41b.tar.gz Surfer-7af3d8556de81996d476d92807928fafdc91c41b.tar.zst Surfer-7af3d8556de81996d476d92807928fafdc91c41b.zip |
add webdav server for easier file access
Diffstat (limited to 'server.js')
-rwxr-xr-x | server.js | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -2,7 +2,6 @@ | |||
2 | 2 | ||
3 | 'use strict'; | 3 | 'use strict'; |
4 | 4 | ||
5 | |||
6 | var express = require('express'), | 5 | var express = require('express'), |
7 | morgan = require('morgan'), | 6 | morgan = require('morgan'), |
8 | passport = require('passport'), | 7 | passport = require('passport'), |
@@ -19,6 +18,7 @@ var express = require('express'), | |||
19 | mkdirp = require('mkdirp'), | 18 | mkdirp = require('mkdirp'), |
20 | auth = require('./src/auth.js'), | 19 | auth = require('./src/auth.js'), |
21 | serveIndex = require('serve-index'), | 20 | serveIndex = require('serve-index'), |
21 | webdav = require('webdav-server').v2, | ||
22 | files = require('./src/files.js')(path.resolve(__dirname, process.argv[2] || 'files')); | 22 | files = require('./src/files.js')(path.resolve(__dirname, process.argv[2] || 'files')); |
23 | 23 | ||
24 | 24 | ||
@@ -63,6 +63,15 @@ if (typeof config.folderListingEnabled === 'undefined') config.folderListingEnab | |||
63 | var app = express(); | 63 | var app = express(); |
64 | var router = new express.Router(); | 64 | var router = new express.Router(); |
65 | 65 | ||
66 | var webdavServer = new webdav.WebDAVServer({ | ||
67 | requireAuthentification: true, | ||
68 | httpAuthentication: new webdav.HTTPBasicAuthentication(new auth.WebdavUserManager(), 'Cloudron Surfer') | ||
69 | }); | ||
70 | |||
71 | webdavServer.setFileSystem('/', new webdav.PhysicalFileSystem(ROOT_FOLDER), function (success) { | ||
72 | console.log(`Mounting ${ROOT_FOLDER} as webdav resource`, success); | ||
73 | }); | ||
74 | |||
66 | var multipart = multipart({ maxFieldsSize: 2 * 1024, limit: '512mb', timeout: 3 * 60 * 1000 }); | 75 | var multipart = multipart({ maxFieldsSize: 2 * 1024, limit: '512mb', timeout: 3 * 60 * 1000 }); |
67 | 76 | ||
68 | router.post ('/api/login', auth.login); | 77 | router.post ('/api/login', auth.login); |
@@ -78,6 +87,7 @@ router.get ('/api/healthcheck', function (req, res) { res.status(200).send(); | |||
78 | 87 | ||
79 | app.use(morgan('dev')); | 88 | app.use(morgan('dev')); |
80 | app.use(compression()); | 89 | app.use(compression()); |
90 | app.use(webdav.extensions.express('/webdav', webdavServer)); | ||
81 | app.use('/api', bodyParser.json()); | 91 | app.use('/api', bodyParser.json()); |
82 | app.use('/api', bodyParser.urlencoded({ extended: false, limit: '100mb' })); | 92 | app.use('/api', bodyParser.urlencoded({ extended: false, limit: '100mb' })); |
83 | app.use('/api', cookieParser()); | 93 | app.use('/api', cookieParser()); |