diff options
author | Johannes Zellner <johannes@cloudron.io> | 2020-03-03 17:57:28 +0100 |
---|---|---|
committer | Johannes Zellner <johannes@cloudron.io> | 2020-03-03 17:57:28 +0100 |
commit | 313dfe99cf8f763b36f333c5072e2430a6b7941f (patch) | |
tree | 520922a7f374b816901345fb087d66868eeff954 /server.js | |
parent | 33ee47f3ca0322ccb19153cafa1c1f7b886dc61a (diff) | |
download | Surfer-313dfe99cf8f763b36f333c5072e2430a6b7941f.tar.gz Surfer-313dfe99cf8f763b36f333c5072e2430a6b7941f.tar.zst Surfer-313dfe99cf8f763b36f333c5072e2430a6b7941f.zip |
Use custom public folder listing
Diffstat (limited to 'server.js')
-rwxr-xr-x | server.js | 24 |
1 files changed, 14 insertions, 10 deletions
@@ -16,7 +16,6 @@ var express = require('express'), | |||
16 | multipart = require('./src/multipart'), | 16 | multipart = require('./src/multipart'), |
17 | mkdirp = require('mkdirp'), | 17 | mkdirp = require('mkdirp'), |
18 | auth = require('./src/auth.js'), | 18 | auth = require('./src/auth.js'), |
19 | serveIndex = require('serve-index'), | ||
20 | webdav = require('webdav-server').v2, | 19 | webdav = require('webdav-server').v2, |
21 | files = require('./src/files.js')(path.resolve(__dirname, process.argv[2] || 'files')); | 20 | files = require('./src/files.js')(path.resolve(__dirname, process.argv[2] || 'files')); |
22 | 21 | ||
@@ -49,7 +48,7 @@ function setSettings(req, res, next) { | |||
49 | 48 | ||
50 | // Load the config file | 49 | // Load the config file |
51 | try { | 50 | try { |
52 | console.log(`Using config file: ${CONFIG_FILE}`); | 51 | console.log(`Using config file at: ${CONFIG_FILE}`); |
53 | config = require(CONFIG_FILE); | 52 | config = require(CONFIG_FILE); |
54 | } catch (e) { | 53 | } catch (e) { |
55 | if (e.code === 'MODULE_NOT_FOUND') console.log(`Config file ${CONFIG_FILE} not found`); | 54 | if (e.code === 'MODULE_NOT_FOUND') console.log(`Config file ${CONFIG_FILE} not found`); |
@@ -68,7 +67,7 @@ var webdavServer = new webdav.WebDAVServer({ | |||
68 | }); | 67 | }); |
69 | 68 | ||
70 | webdavServer.setFileSystem('/', new webdav.PhysicalFileSystem(ROOT_FOLDER), function (success) { | 69 | webdavServer.setFileSystem('/', new webdav.PhysicalFileSystem(ROOT_FOLDER), function (success) { |
71 | console.log(`Mounting ${ROOT_FOLDER} as webdav resource`, success); | 70 | if (success) console.log(`Mounting webdav resource from: ${ROOT_FOLDER}`); |
72 | }); | 71 | }); |
73 | 72 | ||
74 | var multipart = multipart({ maxFieldsSize: 2 * 1024, limit: '512mb', timeout: 3 * 60 * 1000 }); | 73 | var multipart = multipart({ maxFieldsSize: 2 * 1024, limit: '512mb', timeout: 3 * 60 * 1000 }); |
@@ -81,7 +80,7 @@ router.get ('/api/tokens', auth.verify, auth.getTokens); | |||
81 | router.post ('/api/tokens', auth.verify, auth.createToken); | 80 | router.post ('/api/tokens', auth.verify, auth.createToken); |
82 | router.delete('/api/tokens/:token', auth.verify, auth.delToken); | 81 | router.delete('/api/tokens/:token', auth.verify, auth.delToken); |
83 | router.get ('/api/profile', auth.verify, auth.getProfile); | 82 | router.get ('/api/profile', auth.verify, auth.getProfile); |
84 | router.get ('/api/files/*', auth.verify, files.get); | 83 | router.get ('/api/files/*', auth.verifyIfNeeded, files.get); |
85 | router.post ('/api/files/*', auth.verify, multipart, files.post); | 84 | router.post ('/api/files/*', auth.verify, multipart, files.post); |
86 | router.put ('/api/files/*', auth.verify, files.put); | 85 | router.put ('/api/files/*', auth.verify, files.put); |
87 | router.delete('/api/files/*', auth.verify, files.del); | 86 | router.delete('/api/files/*', auth.verify, files.del); |
@@ -101,17 +100,22 @@ app.use('/', function welcomePage(req, res, next) { | |||
101 | if (config.folderListingEnabled || req.path !== '/') return next(); | 100 | if (config.folderListingEnabled || req.path !== '/') return next(); |
102 | res.status(200).sendFile(path.join(__dirname, '/frontend/welcome.html')); | 101 | res.status(200).sendFile(path.join(__dirname, '/frontend/welcome.html')); |
103 | }); | 102 | }); |
104 | app.use('/', function (req, res, next) { | 103 | app.use('/', function (req, res) { |
105 | if (config.folderListingEnabled) return next(); | 104 | if (!config.folderListingEnabled) return res.status(404).sendFile(__dirname + '/frontend/404.html'); |
106 | res.status(404).sendFile(__dirname + '/frontend/404.html'); | 105 | |
106 | if (!fs.existsSync(path.join(ROOT_FOLDER, req.path))) return res.status(404).sendFile(__dirname + '/frontend/404.html'); | ||
107 | |||
108 | res.status(200).sendFile(__dirname + '/frontend/public.html'); | ||
107 | }); | 109 | }); |
108 | app.use('/', serveIndex(ROOT_FOLDER, { icons: true })); | ||
109 | app.use(lastMile()); | 110 | app.use(lastMile()); |
110 | 111 | ||
111 | var server = app.listen(3000, function () { | 112 | var server = app.listen(3000, function () { |
112 | var host = server.address().address; | 113 | var host = server.address().address; |
113 | var port = server.address().port; | 114 | var port = server.address().port; |
114 | 115 | ||
115 | console.log('Surfer listening on http://%s:%s', host, port); | 116 | console.log(`Base path: ${ROOT_FOLDER}`); |
116 | console.log('Using base path', ROOT_FOLDER); | 117 | console.log(); |
118 | console.log(`Listening on http://${host}:${port}`); | ||
119 | |||
120 | auth.init(config); | ||
117 | }); | 121 | }); |