2024-04-17 22:01:04 +02:00
|
|
|
const log4js = require("log4js");
|
|
|
|
const clientLogger = log4js.getLogger("client");
|
|
|
|
const { Formidable } = require("formidable");
|
|
|
|
const apiHandler = require("../../handler/APIHandler");
|
|
|
|
const util = require("util");
|
2021-01-21 21:06:52 +00:00
|
|
|
|
2024-04-17 22:01:04 +02:00
|
|
|
exports.expressPreSession = async (hookName: string, { app }: any) => {
|
|
|
|
// The Etherpad client side sends information about how a disconnect happened
|
|
|
|
app.post("/ep/pad/connection-diagnostic-info", async (req: any, res: any) => {
|
|
|
|
const [fields, files] = await new Formidable({}).parse(req);
|
|
|
|
clientLogger.info(`DIAGNOSTIC-INFO: ${fields.diagnosticInfo}`);
|
|
|
|
res.end("OK");
|
|
|
|
});
|
2012-02-25 15:20:31 +01:00
|
|
|
|
2024-04-17 22:01:04 +02:00
|
|
|
const parseJserrorForm = async (req: any) => {
|
|
|
|
const form = new Formidable({
|
|
|
|
maxFileSize: 1, // Files are not expected. Not sure if 0 means unlimited, so 1 is used.
|
|
|
|
});
|
|
|
|
const [fields, files] = await form.parse(req);
|
|
|
|
return fields.errorInfo;
|
|
|
|
};
|
2012-02-25 15:20:31 +01:00
|
|
|
|
2024-04-17 22:01:04 +02:00
|
|
|
// The Etherpad client side sends information about client side javscript errors
|
|
|
|
app.post("/jserror", (req: any, res: any, next: Function) => {
|
|
|
|
(async () => {
|
|
|
|
const data = JSON.parse(await parseJserrorForm(req));
|
|
|
|
clientLogger.warn(`${data.msg} --`, {
|
|
|
|
[util.inspect.custom]: (depth: number, options: any) => {
|
|
|
|
// Depth is forced to infinity to ensure that all of the provided data is logged.
|
|
|
|
options = Object.assign({}, options, {
|
|
|
|
depth: Number.POSITIVE_INFINITY,
|
|
|
|
colors: true,
|
|
|
|
});
|
|
|
|
return util.inspect(data, options);
|
|
|
|
},
|
|
|
|
});
|
|
|
|
res.end("OK");
|
|
|
|
})().catch((err) => next(err || new Error(err)));
|
|
|
|
});
|
2021-10-07 19:46:07 -04:00
|
|
|
|
2024-04-17 22:01:04 +02:00
|
|
|
// Provide a possibility to query the latest available API version
|
|
|
|
app.get("/api", (req: any, res: any) => {
|
|
|
|
res.json({ currentVersion: apiHandler.latestApiVersion });
|
|
|
|
});
|
2020-11-23 13:24:19 -05:00
|
|
|
};
|