From e339d72df60da938ce294d898476f3330c8a44aa Mon Sep 17 00:00:00 2001 From: Leo Gavilieau Date: Sun, 21 May 2023 22:25:49 +0200 Subject: [PATCH] fix: Fix link filter for external urls --- utils/link-filter.da.lua | 21 +++++++++++++++++++-- utils/link-filter.en.lua | 21 +++++++++++++++++++-- utils/link-filter.pt-BR.lua | 21 +++++++++++++++++++-- 3 files changed, 57 insertions(+), 6 deletions(-) diff --git a/utils/link-filter.da.lua b/utils/link-filter.da.lua index 92be730..30c030c 100644 --- a/utils/link-filter.da.lua +++ b/utils/link-filter.da.lua @@ -1,6 +1,23 @@ lang = "da" +local function stringstarts(String,Start) + return string.sub(String,1,string.len(Start))==Start +end + function Link(el) - el.target = "/" .. lang .. el.target - return el + --[[ + It runs these checks and if any succeed then it runs this action and returns the link, preventing the others from running. + 1. Check if its a URL scheme, if so then change nothing + 2. Check if its a ../ url, which means remove language parameter + 3. Change URL irregardless + ]]-- + if el.target:find('://') then + return el + elseif stringstarts(el.target, '../') then + el.target = el.target:sub(3) + return el + else + el.target = "/" .. lang .. el.target + return el + end end \ No newline at end of file diff --git a/utils/link-filter.en.lua b/utils/link-filter.en.lua index c5deeb4..f4d4fa3 100644 --- a/utils/link-filter.en.lua +++ b/utils/link-filter.en.lua @@ -1,6 +1,23 @@ lang = "en" +local function stringstarts(String,Start) + return string.sub(String,1,string.len(Start))==Start +end + function Link(el) - el.target = "/" .. lang .. el.target - return el + --[[ + It runs these checks and if any succeed then it runs this action and returns the link, preventing the others from running. + 1. Check if its a URL scheme, if so then change nothing + 2. Check if its a ../ url, which means remove language parameter + 3. Change URL irregardless + ]]-- + if el.target:find('://') then + return el + elseif stringstarts(el.target, '../') then + el.target = el.target:sub(3) + return el + else + el.target = "/" .. lang .. el.target + return el + end end \ No newline at end of file diff --git a/utils/link-filter.pt-BR.lua b/utils/link-filter.pt-BR.lua index cad9188..4e599f5 100644 --- a/utils/link-filter.pt-BR.lua +++ b/utils/link-filter.pt-BR.lua @@ -1,6 +1,23 @@ lang = "pt-BR" +local function stringstarts(String,Start) + return string.sub(String,1,string.len(Start))==Start +end + function Link(el) - el.target = "/" .. lang .. el.target - return el + --[[ + It runs these checks and if any succeed then it runs this action and returns the link, preventing the others from running. + 1. Check if its a URL scheme, if so then change nothing + 2. Check if its a ../ url, which means remove language parameter + 3. Change URL irregardless + ]]-- + if el.target:find('://') then + return el + elseif stringstarts(el.target, '../') then + el.target = el.target:sub(3) + return el + else + el.target = "/" .. lang .. el.target + return el + end end \ No newline at end of file