Skip to content

Commit a0bcad9

Browse files
committed
updating with latest changes
2 parents f4927b6 + 18c58b7 commit a0bcad9

23 files changed

Lines changed: 355 additions & 365 deletions

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ Options:
4343
--no-live Disable live support through WebSockets
4444
-sA, --suffix-acl Suffix for acl files (default: '.acl')
4545
-sM, --suffix-meta Suffix for metadata files (default: '.meta')
46-
-sC, --suffix-changes Suffix for acl files (default: '.changes')
4746
-sE, --suffix-sse Suffix for SSE files (default: '.events')
4847
4948
```
@@ -83,7 +82,6 @@ In case the `settings` is not passed, then it will start with the following defa
8382
mount: '/', // Where to mount Linked Data Platform
8483
webid: false, // Enable WebID+TLS authentication
8584
suffixAcl: '.acl', // Suffix for acl files
86-
suffixChanges: '.changes', // Suffix for acl files
8785
suffixSSE: '.events', // Suffix for SSE files
8886
proxy: false, // Where to mount the proxy
8987
errorHandler: false, // function(err, req, res, next) to have a custom error handler

bin/ldnode.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,6 @@ var argv = require('nomnom')
7474
help: 'Suffix for metadata files (default: \'.meta\')',
7575
abbr: 'sM'
7676
})
77-
.option('suffixChanges', {
78-
full: 'suffix-changes',
79-
help: 'Suffix for acl files (default: \'.changes\')',
80-
abbr: 'sC'
81-
})
8277
.option('suffixSSE', {
8378
full: 'suffix-sse',
8479
help: 'Suffix for SSE files (default: \'.events\')',
@@ -108,7 +103,7 @@ argv.live = !argv.noLive;
108103

109104
// Set up debug environment
110105
process.env.DEBUG = argv.verbose ? 'ldnode:*' : false;
111-
var debug = require('../lib/logging').server;
106+
var debug = require('../lib/debug').server;
112107

113108
// Set up port
114109
argv.port = argv.port || 3456;
@@ -129,6 +124,7 @@ try {
129124
app = ldnode.createServer(argv);
130125
} catch(e) {
131126
console.log(e.message);
127+
console.log(e.stack)
132128
return 1;
133129
}
134130
app.listen(argv.port, function() {

index.js

Lines changed: 2 additions & 217 deletions
Original file line numberDiff line numberDiff line change
@@ -1,221 +1,6 @@
1-
/*jslint node: true*/
21
"use strict";
32

4-
// Third-party dependencies
5-
var express = require('express');
6-
var app = express();
7-
var getRawBody = require('raw-body');
8-
var expressWs = require('express-ws');
9-
var fs = require('fs');
10-
var responseTime = require('response-time'); // Add X-Response-Time headers
11-
var path = require('path');
12-
var session = require('express-session');
13-
var http = require('http');
14-
var https = require('https');
15-
var request = require('request');
16-
var uuid = require('node-uuid');
17-
var cors = require('cors');
18-
19-
// ldnode dependencies
20-
var acl = require('./lib/acl');
21-
var metadata = require('./lib/metadata');
22-
var header = require('./lib/header');
23-
var LDP = require('./lib/ldp');
24-
var login = require('./lib/login');
25-
var parse = require('./lib/parse');
26-
var debug = require('./lib/logging');
27-
28-
// Request handlers
29-
var getHandler = require('./lib/handlers/get.js');
30-
var postHandler = require('./lib/handlers/post.js');
31-
var putHandler = require('./lib/handlers/put.js');
32-
var deleteHandler = require('./lib/handlers/delete.js');
33-
var patchHandler = require('./lib/handlers/patch.js');
34-
35-
// Error page handler
36-
var errorHandler = require('./lib/handlers/error.js');
37-
38-
// Setting up cors
39-
var corsSettings = cors({
40-
methods: [
41-
'OPTIONS', 'HEAD', 'GET',
42-
'PATCH', 'POST', 'PUT', 'DELETE'
43-
],
44-
exposedHeaders: 'User, Location, Link, Vary, Last-Modified, Content-Length',
45-
credentials: true,
46-
maxAge: 1728000,
47-
origin: true
48-
});
49-
50-
function ldnode (argv) {
51-
var ldp = new LDP(argv);
52-
var app = express();
53-
54-
// Setting options as local variable
55-
app.locals.ldp = ldp;
56-
57-
// Session
58-
app.use(session({
59-
secret: ldp.secret || uuid.v1(),
60-
saveUninitialized: false,
61-
resave: false
62-
}));
63-
64-
// Adding proxy
65-
if (ldp.proxy) {
66-
proxy(app, ldp.proxy);
67-
}
68-
69-
// Setting up routes
70-
app.use('/', routes());
71-
72-
// Setup Express app
73-
if (ldp.live) {
74-
ws(app);
75-
}
76-
77-
debug.server("Router attached to " + ldp.mount);
78-
79-
return app;
80-
}
81-
82-
function createServer(argv) {
83-
var app = express();
84-
var ldpApp = ldnode(argv);
85-
var ldp = ldpApp.locals.ldp;
86-
app.use(ldp.mount, ldpApp);
87-
88-
if (ldp && (ldp.webid || ldp.key || ldp.cert) ) {
89-
debug.settings("SSL Private Key path: " + ldp.key);
90-
debug.settings("SSL Certificate path: " + ldp.cert);
91-
92-
if (!ldp.cert && !ldp.key) {
93-
throw new Error("Missing SSL cert and SSL key to enable WebID");
94-
}
95-
96-
if (!ldp.key && ldp.cert) {
97-
throw new Error("Missing path for SSL key");
98-
}
99-
100-
if (!ldp.cert && ldp.key) {
101-
throw new Error("Missing path for SSL cert");
102-
}
103-
104-
var key;
105-
try {
106-
key = fs.readFileSync(ldp.key);
107-
} catch(e) {
108-
throw new Error("Can't find SSL key in " + ldp.key);
109-
}
110-
111-
var cert;
112-
try {
113-
cert = fs.readFileSync(ldp.cert);
114-
} catch(e) {
115-
throw new Error("Can't find SSL cert in " + ldp.cert);
116-
}
117-
118-
var credentials = {
119-
key: key,
120-
cert: cert,
121-
requestCert: true
122-
};
123-
124-
debug.settings("Private Key: " + credentials.key);
125-
debug.settings("Certificate: " + credentials.cert);
126-
127-
return https.createServer(credentials, app);
128-
}
129-
130-
return app;
131-
}
132-
133-
function proxy (app, path) {
134-
debug.settings('XSS Proxy listening to ' + path);
135-
app.get(path, corsSettings, function (req, res) {
136-
debug.settings('originalUrl: ' + req.originalUrl);
137-
var uri = req.query.uri;
138-
if (!uri) {
139-
return res
140-
.status(400)
141-
.send("Proxy has no uri param ");
142-
}
143-
144-
debug.settings('Proxy destination URI: ' + uri);
145-
request.get(uri).pipe(res);
146-
});
147-
}
148-
149-
function routes () {
150-
var router = express.Router('/');
151-
152-
// Add Link headers
153-
router.use(header.linksHandler);
154-
155-
// Setting CORS
156-
router.use(corsSettings);
157-
158-
router.use('/*', function(req, res, next) {
159-
getRawBody(req,
160-
{
161-
length: req.headers['content-length'],
162-
encoding: 'utf-8' // typer.parse(req.headers['content-type']).parameters.charset
163-
},
164-
function(err, string) {
165-
if (err) {
166-
return next(err);
167-
}
168-
req.text = string;
169-
next();
170-
});
171-
});
172-
173-
router.use('/*', login.loginHandler);
174-
175-
//ACL handlers
176-
router.get("/*", acl.allow('Read'));
177-
router.head("/*", acl.allow('Read'));
178-
router.post("/*", acl.allow('Append'));
179-
router.patch("/*", acl.allow('Append'));
180-
router.put("/*", acl.allow('Append'));
181-
router.delete("/*", acl.allow('Write'));
182-
183-
// Convert json-ld and nquads to turtle
184-
router.use('/*', parse.parseHandler);
185-
186-
// Add response time
187-
router.use(responseTime());
188-
189-
// HTTP methods handlers
190-
router.get('/*', getHandler.handler);
191-
router.head('/*', getHandler.headHandler);
192-
router.put('/*', putHandler.handler);
193-
router.delete('/*', deleteHandler.handler);
194-
router.post('/*', postHandler.handler);
195-
router.patch('/*', patchHandler.handler);
196-
197-
//Error handling
198-
router.use(errorHandler.handler);
199-
return router;
200-
}
201-
202-
function ws (app) {
203-
expressWs(app);
204-
app.mountpath = ''; // needs to be set for addSocketRoute aka .ws()
205-
// was options.pathFilter
206-
app.ws('/', function(socket, res) {
207-
debug.subscription("incoming on " + socket.path);
208-
socket.on('message', function(msg) {
209-
debug.subscription("message = " + msg);
210-
// subscribeToChanges(socket, res);
211-
});
212-
});
213-
}
214-
215-
ldnode.proxy = proxy;
216-
ldnode.ws = ws;
217-
ldnode.routes = routes;
218-
ldnode.createServer = createServer;
3+
var ldnode = require('./lib/create-app');
4+
ldnode.createServer = require('./lib/create-server');
2195

2206
module.exports = ldnode;
221-

lib/acl.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var S = require('string');
99
var url = require('url');
1010
var async = require('async');
1111

12-
var debug = require('./logging').ACL;
12+
var debug = require('./debug').ACL;
1313
var utils = require('./utils.js');
1414
var ns = require('./vocab/ns.js').ns;
1515
var rdfVocab = require('./vocab/rdf.js');

lib/create-app.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
module.exports = createApp;
2+
3+
var express = require('express');
4+
var session = require('express-session');
5+
var uuid = require('node-uuid');
6+
var cors = require('cors');
7+
8+
var debug = require('./debug');
9+
var LDP = require('./ldp');
10+
var LdpMiddleware = require('./ldp-middleware');
11+
12+
var proxy = require('./handlers/proxy')
13+
14+
var corsSettings = cors({
15+
methods: [
16+
'OPTIONS', 'HEAD', 'GET',
17+
'PATCH', 'POST', 'PUT', 'DELETE'
18+
],
19+
exposedHeaders: 'User, Location, Link, Vary, Last-Modified, Content-Length',
20+
credentials: true,
21+
maxAge: 1728000,
22+
origin: true
23+
});
24+
25+
function createApp (argv) {
26+
var ldp = new LDP(argv);
27+
var app = express();
28+
29+
// Setting options as local variable
30+
app.locals.ldp = ldp;
31+
32+
// Session
33+
app.use(session({
34+
secret: ldp.secret || uuid.v1(),
35+
saveUninitialized: false,
36+
resave: false
37+
}));
38+
39+
// Adding proxy
40+
if (ldp.proxy) {
41+
proxy(app, ldp.proxy);
42+
}
43+
44+
// Setting up routes
45+
app.use('/', LdpMiddleware(corsSettings));
46+
47+
return app;
48+
}

0 commit comments

Comments
 (0)