GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — node-solid-server/lib/create-server.mjs at main · nodeSolidServer/node-solid-server Expand file tree/ Copy pathcreate-server.mjsMore file actions 128 lines (109 loc) · 3.51 KB / Copy pathcreate-server.mjsFile metadata and controls128 lines (109 loc) · 3.51 KB 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 import express from 'express' import fs from 'fs' import https from 'https' import http from 'http' import SolidWs from 'solid-ws' import globalTunnel from 'global-tunnel-ng' import debug from './debug.mjs' import createApp from './create-app.mjs' function createServer (argv, app) { argv = argv || {} app = app || express() const ldpApp = createApp(argv) const ldp = ldpApp.locals.ldp || {} let mount = argv.mount || '/' // Removing ending '/' if (mount.length > 1 && mount[mount.length - 1] === '/') { mount = mount.slice(0, -1) } app.use(mount, ldpApp) debug.settings('Base URL (--mount): ' + mount) if (argv.idp) { console.warn('The idp configuration option has been renamed to multiuser.') argv.multiuser = argv.idp delete argv.idp } if (argv.httpProxy) { globalTunnel.initialize(argv.httpProxy) } let server const needsTLS = argv.sslKey || argv.sslCert if (!needsTLS) { server = http.createServer(app) } else { debug.settings('SSL Private Key path: ' + argv.sslKey) debug.settings('SSL Certificate path: ' + argv.sslCert) if (!argv.sslCert && !argv.sslKey) { throw new Error('Missing SSL cert and SSL key to enable WebIDs') } if (!argv.sslKey && argv.sslCert) { throw new Error('Missing path for SSL key') } if (!argv.sslCert && argv.sslKey) { throw new Error('Missing path for SSL cert') } let key try { key = fs.readFileSync(argv.sslKey) } catch (e) { throw new Error('Can\'t find SSL key in ' + argv.sslKey) } let cert try { cert = fs.readFileSync(argv.sslCert) } catch (e) { throw new Error('Can\'t find SSL cert in ' + argv.sslCert) } const credentials = Object.assign({ key: key, cert: cert }, argv) if (ldp.webid && ldp.auth === 'tls') { credentials.requestCert = true } server = https.createServer(credentials, app) } // Look for port or list of ports to redirect to argv.port if ('redirectHttpFrom' in argv) { const redirectHttpFroms = argv.redirectHttpFrom.constructor === Array ? argv.redirectHttpFrom : [argv.redirectHttpFrom] const portStr = argv.port === 443 ? '' : ':' + argv.port redirectHttpFroms.forEach(redirectHttpFrom => { debug.settings('will redirect from port ' + redirectHttpFrom + ' to port ' + argv.port) const redirectingServer = express() redirectingServer.get('*', function (req, res) { const host = req.headers.host.split(':') // ignore port debug.server(host, '=> https://' + host + portStr + req.url) res.redirect('https://' + host + portStr + req.url) }) redirectingServer.listen(redirectHttpFrom) }) } // Setup Express app if (ldp.live) { const solidWs = SolidWs(server, ldpApp) ldpApp.locals.ldp.live = solidWs.publish.bind(solidWs) } // Wrap server.listen() to ensure async initialization completes after server starts const originalListen = server.listen.bind(server) server.listen = function (...args) { // Start listening first originalListen(...args) // Then run async initialization (if needed) if (ldpApp.locals.initFunction) { const initFunction = ldpApp.locals.initFunction delete ldpApp.locals.initFunction // Run initialization after server is listening initFunction() .catch(err => { console.error('Initialization error:', err) server.emit('error', err) }) } return server } return server } export default createServer |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |