mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-01-19 14:13:34 +01:00
Fixed typescript checks.
This commit is contained in:
parent
fd9b5d0ff3
commit
be49d75fde
7 changed files with 81 additions and 25 deletions
|
@ -203,6 +203,9 @@ importers:
|
|||
languages4translatewiki:
|
||||
specifier: 0.1.3
|
||||
version: 0.1.3
|
||||
live-directory:
|
||||
specifier: ^3.0.3
|
||||
version: 3.0.3
|
||||
live-plugin-manager:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
|
@ -3297,6 +3300,9 @@ packages:
|
|||
lines-and-columns@1.2.4:
|
||||
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
||||
|
||||
live-directory@3.0.3:
|
||||
resolution: {integrity: sha512-d5jchsscPvkDqwv8lypjpxIIUz4w8fu+czfEkNEMGub4+EZ0SBj5Nclb4E2QmJNC5HJ4BwEdc5DHvoHZfIAK+w==}
|
||||
|
||||
live-plugin-manager@1.0.0:
|
||||
resolution: {integrity: sha512-ZzSagtubz5lrlyRZzpJ4L3KCZwdPeYKQJqz3py7hO3R4BDbt6NH2Dn70rWoQTF6ichM8P91xji1cN6ytmZ2VjQ==}
|
||||
|
||||
|
@ -7916,6 +7922,10 @@ snapshots:
|
|||
|
||||
lines-and-columns@1.2.4: {}
|
||||
|
||||
live-directory@3.0.3:
|
||||
dependencies:
|
||||
chokidar: 3.6.0
|
||||
|
||||
live-plugin-manager@1.0.0:
|
||||
dependencies:
|
||||
'@types/debug': 4.1.12
|
||||
|
|
|
@ -18,9 +18,10 @@ const settings = require('../utils/Settings');
|
|||
const stats = require('../stats')
|
||||
import util from 'util';
|
||||
const webaccess = require('./express/webaccess');
|
||||
import HyperExpress from 'hyper-express';
|
||||
import HyperExpress, {ServerConstructorOptions} from 'hyper-express';
|
||||
|
||||
import SecretRotator from '../security/SecretRotator';
|
||||
import {Server} from "hyper-express/types/components/Server";
|
||||
|
||||
let secretRotator: SecretRotator|null = null;
|
||||
const logger = log4js.getLogger('http');
|
||||
|
@ -31,6 +32,7 @@ const socketsEvents = new events.EventEmitter();
|
|||
const startTime = stats.settableGauge('httpStartTime');
|
||||
|
||||
exports.server = null;
|
||||
let appInstance: Server|null = null;
|
||||
|
||||
const closeServer = async () => {
|
||||
if (exports.server != null) {
|
||||
|
@ -55,8 +57,10 @@ const closeServer = async () => {
|
|||
await events.once(socketsEvents, 'updated');
|
||||
}
|
||||
await p;
|
||||
appInstance!.close()
|
||||
clearTimeout(timeout);
|
||||
exports.server = null;
|
||||
appInstance = null
|
||||
startTime.setValue(0);
|
||||
logger.info('HTTP server closed');
|
||||
}
|
||||
|
@ -100,14 +104,21 @@ exports.createServer = async () => {
|
|||
|
||||
exports.restartServer = async () => {
|
||||
await closeServer();
|
||||
const opts: ServerConstructorOptions = {
|
||||
auto_close: true
|
||||
|
||||
const app = new HyperExpress.Server(); // New syntax for express v3
|
||||
}
|
||||
let app: Server
|
||||
|
||||
if (settings.ssl) {
|
||||
console.log('SSL -- enabled');
|
||||
console.log(`SSL -- server key file: ${settings.ssl.key}`);
|
||||
console.log(`SSL -- Certificate Authority's certificate file: ${settings.ssl.cert}`);
|
||||
|
||||
|
||||
opts.cert_file_name = settings.ssl.cert
|
||||
opts.key_file_name = settings.ssl.key
|
||||
|
||||
const options: MapArrayType<any> = {
|
||||
key: fs.readFileSync(settings.ssl.key),
|
||||
cert: fs.readFileSync(settings.ssl.cert),
|
||||
|
@ -120,13 +131,15 @@ exports.restartServer = async () => {
|
|||
options.ca.push(fs.readFileSync(caFileName));
|
||||
}
|
||||
}
|
||||
|
||||
app = new HyperExpress.Server(opts); // New syntax for express v3
|
||||
const https = require('https');
|
||||
exports.server = https.createServer(options, app);
|
||||
} else {
|
||||
app = new HyperExpress.Server(opts); // New syntax for express v3
|
||||
const http = require('http');
|
||||
exports.server = http.createServer(app);
|
||||
}
|
||||
exports.appInstance = app
|
||||
|
||||
app.use((req, res, next) => {
|
||||
// res.header("X-Frame-Options", "deny"); // breaks embedded pads
|
||||
|
@ -163,7 +176,7 @@ exports.restartServer = async () => {
|
|||
*
|
||||
* Source: https://expressjs.com/en/guide/behind-proxies.html
|
||||
*/
|
||||
app.enable('trust proxy');
|
||||
opts.trust_proxy = true
|
||||
}
|
||||
|
||||
// Measure response time
|
||||
|
|
|
@ -6,17 +6,16 @@ import {ErrorCaused} from "../../types/ErrorCaused";
|
|||
const stats = require('../../stats')
|
||||
|
||||
exports.expressCreateServer = (hook_name:string, args: ArgsExpressType, cb:Function) => {
|
||||
exports.app = args.app;
|
||||
|
||||
// Handle errors
|
||||
/*args.app.use((req:any, res:any, next:Function) => {
|
||||
args.app.set_error_handler((req, res, error)=>{
|
||||
// if an error occurs Connect will pass it down
|
||||
// through these "error-handling" middleware
|
||||
// allowing you to respond however you like
|
||||
res.status(500).send({error: 'Sorry, something bad happened!'});
|
||||
console.error(err.stack ? err.stack : err.toString());
|
||||
res.status(500).json({error: 'Sorry, something bad happened!'});
|
||||
console.error(error.stack ? error.stack : error.toString());
|
||||
stats.meter('http500').mark();
|
||||
});*/
|
||||
})
|
||||
|
||||
|
||||
return cb();
|
||||
};
|
||||
|
|
|
@ -76,6 +76,8 @@ export const expressCreateServer = (hookName:string, args:ArgsExpressType, cb:Fu
|
|||
maxHttpBufferSize: settings.socketIo.maxHttpBufferSize,
|
||||
})
|
||||
|
||||
io.attachApp(args.app)
|
||||
|
||||
|
||||
const handleConnection = (socket:Socket) => {
|
||||
sockets.add(socket);
|
||||
|
|
|
@ -10,6 +10,7 @@ import {format} from 'url'
|
|||
import {ParsedUrlQuery} from "node:querystring";
|
||||
import {Http2ServerRequest, Http2ServerResponse} from "node:http2";
|
||||
import {MapArrayType} from "../types/MapType";
|
||||
import LiveDirectory from "live-directory";
|
||||
|
||||
const configuration: Configuration = {
|
||||
scopes: ['openid', 'profile', 'email'],
|
||||
|
@ -153,12 +154,13 @@ export const expressCreateServer = async (hookName: string, args: ArgsExpressTyp
|
|||
});
|
||||
|
||||
|
||||
args.app.post('/interaction/:uid', async (req: Http2ServerRequest, res: Http2ServerResponse, next:Function) => {
|
||||
args.app.post('/interaction/:uid', async (req, res, next) => {
|
||||
const formid = new IncomingForm();
|
||||
try {
|
||||
// @ts-ignore
|
||||
const {login, password} = (await formid.parse(req))[0]
|
||||
const {prompt, jti, session,cid, params, grantId} = await oidc.interactionDetails(req, res);
|
||||
// @ts-ignore
|
||||
const {prompt, jti, session,cid, params, grantId} = await oidc.interactionDetails(req, res);
|
||||
|
||||
const client = await oidc.Client.find(params.client_id as string);
|
||||
|
||||
|
@ -181,7 +183,8 @@ export const expressCreateServer = async (hookName: string, args: ArgsExpressTyp
|
|||
}
|
||||
|
||||
if (account) {
|
||||
await oidc.interactionFinished(req, res, {
|
||||
// @ts-ignore
|
||||
await oidc.interactionFinished(req, res, {
|
||||
login: {accountId: account.username}
|
||||
}, {mergeWithLastSubmission: false});
|
||||
}
|
||||
|
@ -213,24 +216,26 @@ export const expressCreateServer = async (hookName: string, args: ArgsExpressTyp
|
|||
}
|
||||
}
|
||||
const result = {consent: {grantId: await grant!.save()}};
|
||||
await oidc.interactionFinished(req, res, result, {
|
||||
// @ts-ignore
|
||||
await oidc.interactionFinished(req, res, result, {
|
||||
mergeWithLastSubmission: true,
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
await next();
|
||||
next();
|
||||
} catch (err:any) {
|
||||
return res.writeHead(500).end(err.message);
|
||||
return res.status(500).end(err.message);
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
args.app.get('/interaction/:uid', async (req: Request, res: Response, next: Function) => {
|
||||
args.app.get('/interaction/:uid', async (req, res, next) => {
|
||||
try {
|
||||
const {
|
||||
const {
|
||||
uid, prompt, params, session,
|
||||
} = await oidc.interactionDetails(req, res);
|
||||
// @ts-ignore
|
||||
} = await oidc.interactionDetails(req, res);
|
||||
|
||||
params["state"] = uid
|
||||
|
||||
|
@ -253,12 +258,35 @@ export const expressCreateServer = async (hookName: string, args: ArgsExpressTyp
|
|||
return res.sendFile(path.join(settings.root,'src','static', 'oidc','login.html'));
|
||||
}
|
||||
} catch (err) {
|
||||
return next(err);
|
||||
throw new Error("Invalid name");
|
||||
}
|
||||
});
|
||||
|
||||
const LiveAssets = new LiveDirectory(path.join(settings.root,'src','static', 'oidc'), {
|
||||
})
|
||||
|
||||
args.app.use('/views/', express.static(path.join(settings.root,'src','static', 'oidc'), {maxAge: 1000 * 60 * 60 * 24}));
|
||||
args.app.get('/views/*', (request, response)=>{
|
||||
// Strip away '/assets' from the request path to get asset relative path
|
||||
// Lookup LiveFile instance from our LiveDirectory instance.
|
||||
const path = request.path.replace('/views', '');
|
||||
const file = LiveAssets.get(path);
|
||||
|
||||
// Return a 404 if no asset/file exists on the derived path
|
||||
if (file === undefined) return response.status(404).send();
|
||||
|
||||
const fileParts = file.path.split(".");
|
||||
const extension = fileParts[fileParts.length - 1];
|
||||
|
||||
// Retrieve the file content and serve it depending on the type of content available for this file
|
||||
const content = file.content;
|
||||
if (content instanceof Buffer) {
|
||||
// Set appropriate mime-type and serve file content Buffer as response body (This means that the file content was cached in memory)
|
||||
return response.type(extension).send(content);
|
||||
} else {
|
||||
// Set the type and stream the content as the response body (This means that the file content was NOT cached in memory)
|
||||
return response.type(extension).stream(content);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
oidc.on('authorization.error', (ctx, error) => {
|
||||
|
@ -277,6 +305,7 @@ export const expressCreateServer = async (hookName: string, args: ArgsExpressTyp
|
|||
oidc.on('revocation.error', (ctx, error) => {
|
||||
console.log('revocation.error', error);
|
||||
})
|
||||
args.app.use("/oidc", oidc.callback());
|
||||
// @ts-ignore
|
||||
args.app.use("/oidc", oidc.callback());
|
||||
//cb();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import {Server} from "hyper-express/types/components/Server";
|
||||
|
||||
export type ArgsExpressType = {
|
||||
app:any,
|
||||
app: Server,
|
||||
io: any,
|
||||
server:any
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,19 +44,20 @@
|
|||
"find-root": "1.1.0",
|
||||
"formidable": "^3.5.1",
|
||||
"http-errors": "^2.0.0",
|
||||
"hyper-express": "^6.16.4",
|
||||
"jose": "^5.6.3",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jsdom": "^24.1.1",
|
||||
"jsonminify": "0.4.2",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"languages4translatewiki": "0.1.3",
|
||||
"live-directory": "^3.0.3",
|
||||
"live-plugin-manager": "^1.0.0",
|
||||
"lodash.clonedeep": "4.5.0",
|
||||
"log4js": "^6.9.1",
|
||||
"lru-cache": "^11.0.0",
|
||||
"measured-core": "^2.0.0",
|
||||
"mime-types": "^2.1.35",
|
||||
"hyper-express": "^6.16.4",
|
||||
"oidc-provider": "^8.5.1",
|
||||
"openapi-backend": "^5.10.6",
|
||||
"proxy-addr": "^2.0.7",
|
||||
|
|
Loading…
Reference in a new issue