Switched to hyper express

This commit is contained in:
SamTv12345 2024-08-19 15:22:11 +02:00
parent 3c66e8c5d6
commit fd9b5d0ff3
8 changed files with 84 additions and 67 deletions

100
pnpm-lock.yaml generated
View file

@ -182,6 +182,9 @@ importers:
http-errors: http-errors:
specifier: ^2.0.0 specifier: ^2.0.0
version: 2.0.0 version: 2.0.0
hyper-express:
specifier: ^6.16.4
version: 6.16.4
jose: jose:
specifier: ^5.6.3 specifier: ^5.6.3
version: 5.6.3 version: 5.6.3
@ -218,9 +221,6 @@ importers:
mime-types: mime-types:
specifier: ^2.1.35 specifier: ^2.1.35
version: 2.1.35 version: 2.1.35
nanoexpress:
specifier: ^6.4.4
version: 6.4.4
oidc-provider: oidc-provider:
specifier: ^8.5.1 specifier: ^8.5.1
version: 8.5.1 version: 8.5.1
@ -552,12 +552,6 @@ packages:
resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@dalisoft/args@0.1.1':
resolution: {integrity: sha512-PwmLEhnTyK6+AUwD0oqS57nLs1vpB17vEDlMc1i27zH8mrtFJmBmYfQv4FszoUHDHv3PtFk8M0X9yWxry2TSwA==}
'@dalisoft/events@0.2.0':
resolution: {integrity: sha512-2NS/0vS9eL8ZxhgCVZQgPS4uoqbcSk9FN3G8Eqakcej7wOpH72z1kmDEDGI5T+MOp9IueKT2qI0XUdXhKeK9GA==}
'@docsearch/css@3.6.0': '@docsearch/css@3.6.0':
resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==}
@ -2045,6 +2039,10 @@ packages:
builtins@5.1.0: builtins@5.1.0:
resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==}
busboy@1.6.0:
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
engines: {node: '>=10.16.0'}
bytes@3.1.2: bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
@ -2164,6 +2162,10 @@ packages:
cookie-signature@1.0.6: cookie-signature@1.0.6:
resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
cookie-signature@1.2.1:
resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==}
engines: {node: '>=6.6.0'}
cookie@0.4.1: cookie@0.4.1:
resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==} resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
@ -2655,9 +2657,6 @@ packages:
extend@3.0.2: extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
fast-decode-uri-component@1.0.1:
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
fast-deep-equal@3.1.3: fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
@ -2671,9 +2670,6 @@ packages:
fast-levenshtein@2.0.6: fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
fast-query-parse@3.0.0:
resolution: {integrity: sha512-u4vMOOKVZalfh0JygVJQLE1POZrgdKtptmNHt6CVRCVSClNIP7T1yjI/EyT+YlVJTb1PsnVWKMjDzbsTRtPm6Q==}
fast-safe-stringify@2.1.1: fast-safe-stringify@2.1.1:
resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
@ -3000,6 +2996,9 @@ packages:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'} engines: {node: '>=16.17.0'}
hyper-express@6.16.4:
resolution: {integrity: sha512-mf42sJw+DW354iaoSre4WO5Z/IBaM6WSkJzanGt+Pag1nh1sb9MI9I/4LQK0K1avhqxjpegKujAHIhlAxuVauA==}
i18next-browser-languagedetector@8.0.0: i18next-browser-languagedetector@8.0.0:
resolution: {integrity: sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw==} resolution: {integrity: sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw==}
@ -3520,10 +3519,6 @@ packages:
ms@2.1.3: ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
nanoexpress@6.4.4:
resolution: {integrity: sha512-yyGHOl9koJf7C/a6Ojs6boKaZyrTneCG76vL+/SqDC1uRn9f/h6LL84PbVT22rX1SVQ5NB8v7mfoRrjbUPWpyQ==}
engines: {node: '>=18.20.4'}
nanoid@3.3.7: nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@ -3970,6 +3965,9 @@ packages:
run-parallel@1.2.0: run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
rxjs@7.8.1:
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
safe-array-concat@1.1.2: safe-array-concat@1.1.2:
resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
engines: {node: '>=0.4'} engines: {node: '>=0.4'}
@ -4129,6 +4127,10 @@ packages:
resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==}
engines: {node: '>=8.0'} engines: {node: '>=8.0'}
streamsearch@1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
string-width@4.2.3: string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -4320,14 +4322,17 @@ packages:
resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
typed-emitter@2.1.0:
resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==}
typescript@5.5.4: typescript@5.5.4:
resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
engines: {node: '>=14.17'} engines: {node: '>=14.17'}
hasBin: true hasBin: true
uWebSockets.js@https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/6f4b450fc642abba540535f0755c990b42a16026: uWebSockets.js@https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/8fa05571bf6ea95be8966ad313d9d39453e381ae:
resolution: {tarball: https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/6f4b450fc642abba540535f0755c990b42a16026} resolution: {tarball: https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/8fa05571bf6ea95be8966ad313d9d39453e381ae}
version: 20.47.0 version: 20.44.0
ueberdb2@4.2.93: ueberdb2@4.2.93:
resolution: {integrity: sha512-inWXazVuEJc33aRBm6kCT8/ymgSvHcXbakKf4nxVf8Wp86Le0cQd3URn3cCUhxRV05qP14kDdvAQho9LUiXWwg==} resolution: {integrity: sha512-inWXazVuEJc33aRBm6kCT8/ymgSvHcXbakKf4nxVf8Wp86Le0cQd3URn3cCUhxRV05qP14kDdvAQho9LUiXWwg==}
@ -4950,12 +4955,6 @@ snapshots:
'@babel/helper-validator-identifier': 7.24.7 '@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0 to-fast-properties: 2.0.0
'@dalisoft/args@0.1.1': {}
'@dalisoft/events@0.2.0':
dependencies:
'@dalisoft/args': 0.1.1
'@docsearch/css@3.6.0': {} '@docsearch/css@3.6.0': {}
'@docsearch/js@3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': '@docsearch/js@3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
@ -6381,6 +6380,10 @@ snapshots:
dependencies: dependencies:
semver: 7.6.3 semver: 7.6.3
busboy@1.6.0:
dependencies:
streamsearch: 1.1.0
bytes@3.1.2: {} bytes@3.1.2: {}
cac@6.7.14: {} cac@6.7.14: {}
@ -6502,6 +6505,8 @@ snapshots:
cookie-signature@1.0.6: {} cookie-signature@1.0.6: {}
cookie-signature@1.2.1: {}
cookie@0.4.1: {} cookie@0.4.1: {}
cookie@0.4.2: {} cookie@0.4.2: {}
@ -7166,8 +7171,6 @@ snapshots:
extend@3.0.2: {} extend@3.0.2: {}
fast-decode-uri-component@1.0.1: {}
fast-deep-equal@3.1.3: {} fast-deep-equal@3.1.3: {}
fast-glob@3.3.2: fast-glob@3.3.2:
@ -7182,10 +7185,6 @@ snapshots:
fast-levenshtein@2.0.6: {} fast-levenshtein@2.0.6: {}
fast-query-parse@3.0.0:
dependencies:
fast-decode-uri-component: 1.0.1
fast-safe-stringify@2.1.1: {} fast-safe-stringify@2.1.1: {}
fast-uri@3.0.1: {} fast-uri@3.0.1: {}
@ -7590,6 +7589,18 @@ snapshots:
human-signals@5.0.0: {} human-signals@5.0.0: {}
hyper-express@6.16.4:
dependencies:
accepts: 1.3.8
busboy: 1.6.0
cookie: 0.4.2
cookie-signature: 1.2.1
mime-types: 2.1.35
range-parser: 1.2.1
type-is: 1.6.18
typed-emitter: 2.1.0
uWebSockets.js: https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/8fa05571bf6ea95be8966ad313d9d39453e381ae
i18next-browser-languagedetector@8.0.0: i18next-browser-languagedetector@8.0.0:
dependencies: dependencies:
'@babel/runtime': 7.24.7 '@babel/runtime': 7.24.7
@ -8137,14 +8148,6 @@ snapshots:
ms@2.1.3: {} ms@2.1.3: {}
nanoexpress@6.4.4:
dependencies:
'@dalisoft/events': 0.2.0
ajv: 8.17.1
cookie: 0.6.0
fast-query-parse: 3.0.0
uWebSockets.js: https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/6f4b450fc642abba540535f0755c990b42a16026
nanoid@3.3.7: {} nanoid@3.3.7: {}
nanoid@5.0.7: {} nanoid@5.0.7: {}
@ -8614,6 +8617,11 @@ snapshots:
dependencies: dependencies:
queue-microtask: 1.2.3 queue-microtask: 1.2.3
rxjs@7.8.1:
dependencies:
tslib: 2.6.3
optional: true
safe-array-concat@1.1.2: safe-array-concat@1.1.2:
dependencies: dependencies:
call-bind: 1.0.7 call-bind: 1.0.7
@ -8821,6 +8829,8 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
streamsearch@1.1.0: {}
string-width@4.2.3: string-width@4.2.3:
dependencies: dependencies:
emoji-regex: 8.0.0 emoji-regex: 8.0.0
@ -9050,9 +9060,13 @@ snapshots:
is-typed-array: 1.1.13 is-typed-array: 1.1.13
possible-typed-array-names: 1.0.0 possible-typed-array-names: 1.0.0
typed-emitter@2.1.0:
optionalDependencies:
rxjs: 7.8.1
typescript@5.5.4: {} typescript@5.5.4: {}
uWebSockets.js@https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/6f4b450fc642abba540535f0755c990b42a16026: {} uWebSockets.js@https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/8fa05571bf6ea95be8966ad313d9d39453e381ae: {}
ueberdb2@4.2.93: {} ueberdb2@4.2.93: {}

View file

@ -18,7 +18,7 @@ const settings = require('../utils/Settings');
const stats = require('../stats') const stats = require('../stats')
import util from 'util'; import util from 'util';
const webaccess = require('./express/webaccess'); const webaccess = require('./express/webaccess');
import nanoexpress from 'nanoexpress'; import HyperExpress from 'hyper-express';
import SecretRotator from '../security/SecretRotator'; import SecretRotator from '../security/SecretRotator';
@ -101,7 +101,7 @@ exports.createServer = async () => {
exports.restartServer = async () => { exports.restartServer = async () => {
await closeServer(); await closeServer();
const app = nanoexpress(); // New syntax for express v3 const app = new HyperExpress.Server(); // New syntax for express v3
if (settings.ssl) { if (settings.ssl) {
console.log('SSL -- enabled'); console.log('SSL -- enabled');
@ -252,7 +252,10 @@ exports.restartServer = async () => {
socketsEvents.emit('updated'); socketsEvents.emit('updated');
}); });
}); });
await util.promisify(exports.server.listen).bind(exports.server)(settings.port, settings.ip); app.listen(settings.port, settings.ip, ()=>{
console.log("running")
})
//await util.promisify(exports.server.listen).bind(exports.server)(settings.port, settings.ip);
startTime.setValue(Date.now()); startTime.setValue(Date.now());
logger.info('HTTP server listening for connections'); logger.info('HTTP server listening for connections');
}; };

View file

@ -9,14 +9,14 @@ exports.expressCreateServer = (hook_name:string, args: ArgsExpressType, cb:Funct
exports.app = args.app; exports.app = args.app;
// Handle errors // Handle errors
args.app.use((err:ErrorCaused, req:any, res:any, next:Function) => { /*args.app.use((req:any, res:any, next:Function) => {
// if an error occurs Connect will pass it down // if an error occurs Connect will pass it down
// through these "error-handling" middleware // through these "error-handling" middleware
// allowing you to respond however you like // allowing you to respond however you like
res.status(500).send({error: 'Sorry, something bad happened!'}); res.status(500).send({error: 'Sorry, something bad happened!'});
console.error(err.stack ? err.stack : err.toString()); console.error(err.stack ? err.stack : err.toString());
stats.meter('http500').mark(); stats.meter('http500').mark();
}); });*/
return cb(); return cb();
}; };

View file

@ -25,7 +25,7 @@ exports.expressCreateServer = (hookName:string, args:ArgsExpressType, cb:Functio
}); });
// handle export requests // handle export requests
args.app.use('/p/:pad/:rev?/export/:type', limiter); args.app.use('/p/pad/rev/export/type', limiter);
args.app.get('/p/:pad/:rev?/export/:type', (req:any, res:any, next:Function) => { args.app.get('/p/:pad/:rev?/export/:type', (req:any, res:any, next:Function) => {
(async () => { (async () => {
const types = ['pdf', 'doc', 'txt', 'html', 'odt', 'etherpad']; const types = ['pdf', 'doc', 'txt', 'html', 'odt', 'etherpad'];
@ -71,7 +71,7 @@ exports.expressCreateServer = (hookName:string, args:ArgsExpressType, cb:Functio
}); });
// handle import requests // handle import requests
args.app.use('/p/:pad/import', limiter); args.app.use('/p/pad/import', limiter);
args.app.post('/p/:pad/import', (req:any, res:any, next:Function) => { args.app.post('/p/:pad/import', (req:any, res:any, next:Function) => {
(async () => { (async () => {
// @ts-ignore // @ts-ignore

View file

@ -121,14 +121,10 @@ const handleLiveReload = async (args: any, padString: string, timeSliderString:
}; };
args.app.use((req: any, res: any, next: Function) => { args.app.use((req: any, res: any, next: Function) => {
if (req.path.startsWith('/p/') && req.path.split('/').length == 3) { if (req.path.startsWith('/p/') && req.path.split('/').length == 3) {
req.params = { req.padId = req.path.split('/')[2]
pad: req.path.split('/')[2]
}
routeHandlers['/p/:pad'](req, res); routeHandlers['/p/:pad'](req, res);
} else if (req.path.startsWith('/p/') && req.path.split('/').length == 4) { } else if (req.path.startsWith('/p/') && req.path.split('/').length == 4) {
req.params = { req.padId = req.path.split('/')[2]
pad: req.path.split('/')[2]
}
routeHandlers['/p/:pad/timeslider'](req, res); routeHandlers['/p/:pad/timeslider'](req, res);
} else if (req.path == "/"){ } else if (req.path == "/"){
routeHandlers['/'](req, res); routeHandlers['/'](req, res);
@ -163,7 +159,7 @@ const handleLiveReload = async (args: any, padString: string, timeSliderString:
setRouteHandler("/p/:pad", (req: any, res: any, next: Function) => { setRouteHandler("/p/:pad", (req: any, res: any, next: Function) => {
// The below might break for pads being rewritten // The below might break for pads being rewritten
const isReadOnly = !webaccess.userCanModify(req.params.pad, req); const isReadOnly = !webaccess.userCanModify(req.padId, req);
hooks.callAll('padInitToolbar', { hooks.callAll('padInitToolbar', {
toolbar, toolbar,
@ -192,7 +188,7 @@ const handleLiveReload = async (args: any, padString: string, timeSliderString:
setRouteHandler("/p/:pad/timeslider", (req: any, res: any, next: Function) => { setRouteHandler("/p/:pad/timeslider", (req: any, res: any, next: Function) => {
console.log("Reloading pad") console.log("Reloading pad")
// The below might break for pads being rewritten // The below might break for pads being rewritten
const isReadOnly = !webaccess.userCanModify(req.params.pad, req); const isReadOnly = !webaccess.userCanModify(req.padId, req);
hooks.callAll('padInitToolbar', { hooks.callAll('padInitToolbar', {
toolbar, toolbar,
@ -331,7 +327,7 @@ exports.expressCreateServer = async (hookName: string, args: any, cb: Function)
// serve pad.html under /p // serve pad.html under /p
args.app.get('/p/:pad', (req: any, res: any, next: Function) => { args.app.get('/p/:pad', (req: any, res: any, next: Function) => {
// The below might break for pads being rewritten // The below might break for pads being rewritten
const isReadOnly = !webaccess.userCanModify(req.params.pad, req); const isReadOnly = !webaccess.userCanModify(req.padId, req);
hooks.callAll('padInitToolbar', { hooks.callAll('padInitToolbar', {
toolbar, toolbar,

View file

@ -34,7 +34,7 @@ exports.expressPreSession = async (hookName:string, {app}:any) => {
// Minify will serve static files compressed (minify enabled). It also has // Minify will serve static files compressed (minify enabled). It also has
// file-specific hacks for ace/require-kernel/etc. // file-specific hacks for ace/require-kernel/etc.
app.get('/static/:filename(*)', minify); app.use('/static', minify);
// serve plugin definitions // serve plugin definitions
// not very static, but served here so that client can do // not very static, but served here so that client can do

View file

@ -146,7 +146,8 @@ const compatPaths = {
* @param res the Express response * @param res the Express response
*/ */
const _minify = async (req:any, res:any) => { const _minify = async (req:any, res:any) => {
let filename = req.params.filename;
let filename = req.path.split('/static/')[1]
try { try {
filename = sanitizePathname(filename); filename = sanitizePathname(filename);
} catch (err) { } catch (err) {
@ -211,23 +212,26 @@ const _minify = async (req:any, res:any) => {
} }
if (!exists) { if (!exists) {
res.writeHead(404, {}); res.status(404)
//res.writeHead(404, {});
res.end(); res.end();
} else if (new Date(req.headers['if-modified-since']) >= date) { } else if (new Date(req.headers['if-modified-since']) >= date) {
res.writeHead(304, {}); res.status(304)
res.end(); res.end();
} else if (req.method === 'HEAD') { } else if (req.method === 'HEAD') {
res.header('Content-Type', contentType); res.header('Content-Type', contentType);
res.writeHead(200, {}); res.status(200)
res.end(); res.end();
} else if (req.method === 'GET') { } else if (req.method === 'GET') {
const content = await getFileCompressed(filename, contentType as string); const content = await getFileCompressed(filename, contentType as string);
res.header('Content-Type', contentType); res.header('Content-Type', contentType);
res.writeHead(200, {}); res.status(200)
//res.writeHead(200, {});
res.write(content); res.write(content);
res.end(); res.end();
} else { } else {
res.writeHead(405, {allow: 'HEAD, GET'}); //res.writeHead(405, {allow: 'HEAD, GET'});
res.status(405)
res.end(); res.end();
} }
}; };

View file

@ -56,7 +56,7 @@
"lru-cache": "^11.0.0", "lru-cache": "^11.0.0",
"measured-core": "^2.0.0", "measured-core": "^2.0.0",
"mime-types": "^2.1.35", "mime-types": "^2.1.35",
"nanoexpress": "^6.4.4", "hyper-express": "^6.16.4",
"oidc-provider": "^8.5.1", "oidc-provider": "^8.5.1",
"openapi-backend": "^5.10.6", "openapi-backend": "^5.10.6",
"proxy-addr": "^2.0.7", "proxy-addr": "^2.0.7",