-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
47 lines (40 loc) · 1.03 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
var fs = require('fs');
var express = require('express');
var jsDAV = require('jsDAV/lib/jsdav');
var abasic = require('jsDAV/lib/DAV/plugins/auth/abstractBasic');
var WWW_DIR = process.env.OPENSHIFT_DATA_DIR + 'www';
fs.mkdir(WWW_DIR);
var auth = abasic.extend({
validateUserPass: function(user, pass, done) {
done(pass === process.env.OPENSHIFT_APP_UUID);
}
});
var app = express();
var dav = jsDAV.mount({
node: WWW_DIR,
mount: '/',
server: app,
standalone: false,
authBackend: auth.new(),
realm: 'WebDAV'
});
var dav_agent = /(WebDAV|DavClnt|litmus|gvfs|davfs|cadaver|BitKinex|sardine)/i;
app.all('*', function(req, res, next) {
var ua = req.get('user-agent');
if (dav_agent.test(ua)) {
dav.exec(req, res);
} else {
next();
}
});
app.use(
express.static(WWW_DIR),
function(req, res) {
res.status(404).sendFile(WWW_DIR + '/404.html', function(err) {
if (err) {
res.sendStatus(404);
}
});
}
);
app.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);