GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — node-solid-server/lib/create-server.mjs at main · nodeSolidServer/node-solid-server

Expand file tree

/

create-server.mjs

Copy path
More file actions
More file actions

Latest commit

 

History

History
History
128 lines (109 loc) · 3.51 KB
/

create-server.mjs

Copy path

File metadata and controls

128 lines (109 loc) · 3.51 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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.