aboutsummaryrefslogtreecommitdiff
path: root/src/server/RouteManager.ts
diff options
context:
space:
mode:
authorBob Zeleznik <zzzman@gmail.com>2020-03-16 19:42:20 -0400
committerBob Zeleznik <zzzman@gmail.com>2020-03-16 19:42:20 -0400
commit1230b4a3307725c5e0eb4daae991b2db5f4d1c96 (patch)
tree9557a855caefded379dcd507a4b96f3327ac27b0 /src/server/RouteManager.ts
parent6886bf8c0549f09e9d911ab105fcf4b2d2f051de (diff)
fixed pdf uploading. changed routes to allow web pages to be loaded with relative urls. added a 'text' field to web documents with the page text contents.
Diffstat (limited to 'src/server/RouteManager.ts')
-rw-r--r--src/server/RouteManager.ts32
1 files changed, 27 insertions, 5 deletions
diff --git a/src/server/RouteManager.ts b/src/server/RouteManager.ts
index 63e957cd1..d8265582e 100644
--- a/src/server/RouteManager.ts
+++ b/src/server/RouteManager.ts
@@ -2,6 +2,7 @@ import RouteSubscriber from "./RouteSubscriber";
import { DashUserModel } from "./authentication/models/user_model";
import { Request, Response, Express } from 'express';
import { cyan, red, green } from 'colors';
+import { Utils } from "../client/northstar/utils/Utils";
export enum Method {
GET,
@@ -86,6 +87,7 @@ export default class RouteManager {
const { method, subscription, secureHandler, publicHandler, errorHandler } = initializer;
const isRelease = this._isRelease;
+ let redirected = "";
const supervised = async (req: Request, res: Response) => {
let { user } = req;
const { originalUrl: target } = req;
@@ -118,13 +120,33 @@ export default class RouteManager {
res.redirect("/login");
}
}
- setTimeout(() => {
- if (!res.headersSent) {
- console.log(red(`Initiating fallback for ${target}. Please remove dangling promise from route handler`));
+ if (!res.headersSent && req.headers.referer?.includes("corsProxy")) {
+ const url = decodeURIComponent(req.headers.referer!);
+ const start = url.match(/.*corsProxy\//)![0];
+ const original = url.replace(start, "");
+ const theurl = original.match(/http[s]?:\/\/[^\/]*/)![0];
+ const newdirect = start + encodeURIComponent(theurl + target);
+ if (newdirect !== redirected) {
+ redirected = newdirect;
+ console.log("redirect relative path: " + (theurl + target));
+ res.redirect(redirected);
+ }
+ }
+ else {
+ if (target.startsWith("/doc/")) {
+ !res.headersSent && setTimeout(() => {
+ if (!res.headersSent) {
+ res.redirect("/login");
+ console.log(red(`Initiating fallback for ${target}. Please remove dangling promise from route handler`));
+ const warning = `request to ${target} fell through - this is a fallback response`;
+ res.send({ warning });
+ }
+ }, 1000);
+ } else {
const warning = `request to ${target} fell through - this is a fallback response`;
res.send({ warning });
}
- }, 1000);
+ }
};
const subscribe = (subscriber: RouteSubscriber | string) => {
let route: string;
@@ -133,7 +155,7 @@ export default class RouteManager {
} else {
route = subscriber.build;
}
- if (!/^\/$|^\/[A-Za-z]+(\/\:[A-Za-z?_]+)*$/g.test(route)) {
+ if (!/^\/$|^\/[A-Za-z\*]+(\/\:[A-Za-z?_\*]+)*$/g.test(route)) {
this.failedRegistrations.push({
reason: RegistrationError.Malformed,
route