]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/env node | |
2 | ||
3 | 'use strict'; | |
4 | ||
5 | ||
6 | var express = require('express'), | |
7 | morgan = require('morgan'), | |
8 | passport = require('passport'), | |
9 | path = require('path'), | |
10 | compression = require('compression'), | |
11 | session = require('express-session'), | |
12 | bodyParser = require('body-parser'), | |
13 | cookieParser = require('cookie-parser'), | |
14 | lastMile = require('connect-lastmile'), | |
15 | multipart = require('./src/multipart'), | |
16 | mkdirp = require('mkdirp'), | |
17 | auth = require('./src/auth.js'), | |
18 | serveIndex = require('serve-index'), | |
19 | files = require('./src/files.js')(path.resolve(__dirname, process.argv[2] || 'files')); | |
20 | ||
21 | var app = express(); | |
22 | var router = new express.Router(); | |
23 | ||
24 | var multipart = multipart({ maxFieldsSize: 2 * 1024, limit: '512mb', timeout: 3 * 60 * 1000 }); | |
25 | ||
26 | router.get ('/api/files/*', auth.verify, files.get); | |
27 | router.put ('/api/files/*', auth.verify, multipart, files.put); | |
28 | router.delete('/api/files/*', auth.verify, files.del); | |
29 | router.get ('/api/healthcheck', function (req, res) { res.status(200).send(); }); | |
30 | ||
31 | // welcome screen in case / does not serve up any file yet | |
32 | router.get('/', function (req, res) { res.status(200).sendFile(path.join(__dirname, '/frontend/welcome.html')); }); | |
33 | ||
34 | var rootFolder = path.resolve(__dirname, process.argv[2] || 'files'); | |
35 | ||
36 | app.use(morgan('dev')); | |
37 | app.use(compression()); | |
38 | app.use('/_admin', express.static(__dirname + '/frontend')); | |
39 | app.use(express.static(rootFolder)); | |
40 | app.use(serveIndex(rootFolder, { icons: true })); | |
41 | app.use(bodyParser.json()); | |
42 | app.use(bodyParser.urlencoded({ extended: false, limit: '100mb' })); | |
43 | app.use(cookieParser()); | |
44 | app.use(session({ secret: 'surfin surfin', resave: false, saveUninitialized: false })); | |
45 | app.use(passport.initialize()); | |
46 | app.use(passport.session()); | |
47 | app.use(router); | |
48 | app.use(lastMile()); | |
49 | ||
50 | var server = app.listen(3000, function () { | |
51 | var host = server.address().address; | |
52 | var port = server.address().port; | |
53 | ||
54 | var basePath = path.resolve(__dirname, process.argv[2] || 'files'); | |
55 | mkdirp.sync(basePath); | |
56 | ||
57 | console.log('Surfer listening at http://%s:%s', host, port); | |
58 | console.log('Using base path', basePath); | |
59 | }); |