diff --git a/src/router.ts b/src/router.ts index e77f42b..f9059a5 100644 --- a/src/router.ts +++ b/src/router.ts @@ -7,6 +7,7 @@ import validate from "./services/validate"; import {postBody} from "./models/post"; import {EmailService} from "./services/email"; import {CaptchaService} from "./services/captcha"; +import getRedirectUrl from "./util/redirect"; const router: Router = Router(); @@ -111,17 +112,6 @@ router.post("/:target", async (req: Request, res: Response) => { }); }); -function getRedirectUrl(req: Request, targetRedirectUrl: string) { - let redirectUrl = targetRedirectUrl - - const urlPattern = /^(https?):\/\//; - if(!urlPattern.test(redirectUrl)) { - redirectUrl = (req.header('Referer') || '/') + redirectUrl; - } - - return redirectUrl -} - router.all("*", (req: Request, res: Response) => res.status(404).end()); export default router; \ No newline at end of file diff --git a/src/util/redirect.ts b/src/util/redirect.ts new file mode 100755 index 0000000..29cb2f4 --- /dev/null +++ b/src/util/redirect.ts @@ -0,0 +1,20 @@ +import {Request} from "express"; + +/** + * Create absolute Url from relative redirectUrl + * @param req incoming Request + * @param targetRedirectUrl redirectUrl from target + * @returns String + */ +function getRedirectUrl(req: Request, targetRedirectUrl: string) { + let redirectUrl = targetRedirectUrl + + const urlPattern = /^(https?):\/\//; + if(!urlPattern.test(redirectUrl)) { + redirectUrl = (req.header('Referer') || '/') + redirectUrl; + } + + return redirectUrl +} + +export default getRedirectUrl; \ No newline at end of file