From 97e5e29294ebb27cdec9106ce57f7571eea3d49e Mon Sep 17 00:00:00 2001 From: flo-mic Date: Fri, 19 Feb 2021 20:40:06 +0100 Subject: add settings for password recommendations --- src/js/Manager/RecommendationManager.js | 40 +++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'src/js/Manager/RecommendationManager.js') diff --git a/src/js/Manager/RecommendationManager.js b/src/js/Manager/RecommendationManager.js index 3b9af73..cda001c 100644 --- a/src/js/Manager/RecommendationManager.js +++ b/src/js/Manager/RecommendationManager.js @@ -3,6 +3,7 @@ import Url from 'url-parse'; import TabManager from '@js/Manager/TabManager'; import SearchIndex from '@js/Search/Index/SearchIndex'; import EventQueue from '@js/Event/EventQueue'; +import SettingsService from '@js/Services/SettingsService'; class RecommendationManager { @@ -34,6 +35,17 @@ class RecommendationManager { TabManager.tabChanged.on(this._tabEvent); TabManager.urlChanged.on(this._tabEvent); SearchIndex.listen.on(this._searchEvent); + this.initRecommendationOptions(); + } + + initRecommendationOptions() { + this.options = { searchQuery: "Host", maxResults: 8 } + SettingsService.getValue('search.recommendation.option') + .then((value) => { + if(value) { + this.options.searchQuery = value; + } + }); } /** @@ -66,8 +78,18 @@ class RecommendationManager { let query = new SearchQuery('or'); query .where( - query.field('host').equals(url.host), - query.field('url').contains(url.pathname.length > 1 ? url.host + url.pathname:url.host) + // search by domain + (this.options.searchQuery === "domain" ? query.field('host').contains(this.getSearchDomainFromHost(url.host)): + // search by hostname + (this.options.searchQuery === "host" ? query.field('host').startsWith(url.host.split(':')[0]): + // search by hostname and port + (this.options.searchQuery === "hostport" ? query.field('host').equals(url.host): + // search exact + (this.options.searchQuery === "exact" ? query.field('url').equals(url.protocol + "//" + url.host + (url.pathname.length > 1 ? url.pathname: "")): + "") + ) + ) + ) ) .type('password') .score(0.3) @@ -83,6 +105,20 @@ class RecommendationManager { return query.execute(); } + /** + * @param {String} host + */ + getSearchDomainFromHost(host) { + var regIPAdress = /((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))/; + if (regIPAdress.test(host)) { + return host; + } + else { + var domain = host.split(':')[0]; + return domain.split('.').reverse()[1] + "." + domain.split('.').reverse()[0]; + } + } + /** * * @param {Object} tab -- cgit v1.2.3