File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -79,6 +79,14 @@ var argv = require('nomnom')
7979 help : 'Suffix for SSE files (default: \'.events\')' ,
8080 abbr : 'sE'
8181 } )
82+ . option ( 'noErrorPages' , {
83+ full : 'no-error-pages' ,
84+ help : 'Disable custom error pages (use Node.js default pages instead)'
85+ } )
86+ . option ( 'errorPages' , {
87+ full : 'error-pages' ,
88+ help : 'Folder from which to look for custom error pages files (files must be named <error-code>.html -- eg. 500.html)'
89+ } )
8290 . parse ( ) ;
8391
8492// Print version and leave
Original file line number Diff line number Diff line change @@ -32,6 +32,9 @@ var putHandler = require('./lib/handlers/put.js');
3232var deleteHandler = require ( './lib/handlers/delete.js' ) ;
3333var patchHandler = require ( './lib/handlers/patch.js' ) ;
3434
35+ // Error page handler
36+ var errorHandler = require ( './lib/error.js' ) ;
37+
3538function ldnode ( argv ) {
3639 var ldp = new LDP ( argv ) ;
3740 var app = express ( ) ;
@@ -70,6 +73,11 @@ function createServer(argv) {
7073 var ldp = ldpApp . locals . ldp ;
7174 app . use ( ldp . mount , ldpApp ) ;
7275
76+ //Error handling
77+ app . use ( errorHandler . handler ) ;
78+
79+ app . locals . ldp = ldp ;
80+
7381 if ( ldp && ( ldp . webid || ldp . key || ldp . cert ) ) {
7482 debug . settings ( "SSL Private Key path: " + ldp . key ) ;
7583 debug . settings ( "SSL Certificate path: " + ldp . cert ) ;
Original file line number Diff line number Diff line change 1+ /*jslint node: true*/
2+ "use strict" ;
3+
4+ var fs = require ( 'fs' ) ;
5+
6+ function errorPageHandler ( err , req , res , next ) {
7+ var ldp = req . app . locals . ldp ;
8+ if ( ldp . customErrorPages ) {
9+ var errorPage = ldp . errorPages +
10+ err . status . toString ( ) + '.html' ;
11+ fs . readFile ( errorPage , 'utf8' , function ( readErr , text ) {
12+ if ( readErr ) {
13+ defaultErrorHandler ( err , res ) ;
14+ } else {
15+ res . status ( err . status ) ;
16+ res . send ( text ) ;
17+ }
18+ } ) ;
19+ } else {
20+ defaultErrorHandler ( err , res ) ;
21+ }
22+ }
23+
24+ function defaultErrorHandler ( err , res ) {
25+ res . status ( err . status ) ;
26+ res . send ( err . message ) ;
27+ }
28+
29+ exports . handler = errorPageHandler ;
Original file line number Diff line number Diff line change @@ -27,6 +27,10 @@ function LDP(argv) {
2727 ldp . cache = argv . cache ;
2828 ldp . live = argv . live ;
2929 ldp . root = argv . root || process . cwd ( ) ;
30+ // Add trailing /
31+ if ( ! ( S ( ldp . root ) . endsWith ( '/' ) ) ) {
32+ ldp . root += '/' ;
33+ }
3034 ldp . port = argv . port ;
3135 ldp . secret = argv . secret ;
3236 ldp . cert = argv . cert ;
@@ -48,10 +52,6 @@ function LDP(argv) {
4852 ldp . suffixChanges = argv . suffixChanges || '.changes' ;
4953 ldp . suffixSSE = argv . suffixSSE || '.events' ;
5054
51- if ( ! ( S ( ldp . root ) . endsWith ( '/' ) ) ) {
52- ldp . root += '/' ;
53- }
54-
5555 ldp . pathFilter = regexp ( ) . start ( ldp . mount ) . toRegExp ( ) ;
5656 ldp . xssProxy = argv . xssProxy ;
5757 ldp . proxyFilter = regexp ( ) . start ( ldp . xssProxy ) . toRegExp ( ) ;
@@ -61,6 +61,15 @@ function LDP(argv) {
6161 ldp . SSEsubscriptions = { } ;
6262 ldp . subscriptions = { } ;
6363
64+ // Error pages folder
65+ ldp . customErrorPages = ! argv . noErrorPages ;
66+ if ( ldp . customErrorPages ) {
67+ ldp . errorPages = argv . errorPages || ldp . root + 'errorPages/' ;
68+ if ( ! S ( ldp . errorPages ) . endsWith ( '/' ) ) {
69+ ldp . errorPages += '/' ;
70+ }
71+ }
72+
6473 debug . settings ( "mount: " + ldp . mount ) ;
6574 debug . settings ( "root: " + ldp . root ) ;
6675 debug . settings ( "URI path filter regexp: " + ldp . pathFilter ) ;
You can’t perform that action at this time.
0 commit comments