diff --git a/src/lib/util.ts b/src/lib/util.ts index 15d717fd..c09eb71c 100644 --- a/src/lib/util.ts +++ b/src/lib/util.ts @@ -113,6 +113,15 @@ let isInternalIP = (host: string): boolean => { ); }; +let isValidURL = (url: string): boolean => { + try { + new URL(url); + return true; // The URL is valid + } catch (e) { + return false; // The URL is not valid + } +}; + let isValidIP = (ip: string): boolean => { return /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test( ip @@ -150,6 +159,7 @@ export default { ipToString, isInternalIP, isValidIP, + isValidURL, parseURL, validateIPRange, }; diff --git a/src/options/App.vue b/src/options/App.vue index f60efd48..771283ce 100644 --- a/src/options/App.vue +++ b/src/options/App.vue @@ -459,7 +459,6 @@ enum Modal { @Component export default class App extends Vue { - public REGEX_DOMAIN: any = /^(?:^|\s)((https?:\/\/)?(?:localhost|[\w-]+(?:\.[\w-]+)+)(:\d+)?(\/\S*)?)/; public Modal = Modal; public modalType: Modal = Modal.DEFAULT; public currentTab: string = 'about'; @@ -964,7 +963,7 @@ export default class App extends Vue { } // test if valid domain - if (sites[i][0] === '' || !this.REGEX_DOMAIN.test(sites[i][0])) { + if (sites[i][0] === '' || !util.isValidURL(sites[i][0])) { this.errors.wlRuleSites = true; this.savingWLRule = false;