mirror of
https://github.com/moparisthebest/keepass2android
synced 2024-11-11 20:15:04 -05:00
d2a06617eb
Wiped out the historical partial Java naming conventions, replaced by C# removed unused fields/parameters removed many unused usings ... (Thanks to ReSharper :-))
121 lines
3.4 KiB
C#
121 lines
3.4 KiB
C#
/*
|
|
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
|
|
|
Keepass2Android is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
Keepass2Android is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
using System;
|
|
using KeePassLib;
|
|
using System.Text.RegularExpressions;
|
|
using KeePassLib.Collections;
|
|
using KeePassLib.Interfaces;
|
|
using KeePassLib.Utility;
|
|
|
|
namespace keepass2android
|
|
{
|
|
public class SearchDbHelper
|
|
{
|
|
private readonly IKp2aApp _app;
|
|
|
|
|
|
public SearchDbHelper(IKp2aApp app) {
|
|
_app = app;
|
|
}
|
|
|
|
|
|
public PwGroup SearchForText (Database database, string str)
|
|
{
|
|
SearchParameters sp = new SearchParameters {SearchString = str};
|
|
|
|
return Search(database, sp);
|
|
}
|
|
public PwGroup Search(Database database, SearchParameters sp)
|
|
{
|
|
|
|
if(sp.RegularExpression) // Validate regular expression
|
|
{
|
|
new Regex(sp.SearchString);
|
|
}
|
|
|
|
string strGroupName = _app.GetResourceString(UiStringKey.search_results) + " (\"" + sp.SearchString + "\")";
|
|
PwGroup pgResults = new PwGroup(true, true, strGroupName, PwIcon.EMailSearch) {IsVirtual = true};
|
|
|
|
PwObjectList<PwEntry> listResults = pgResults.Entries;
|
|
|
|
|
|
database.Root.SearchEntries(sp, listResults, new NullStatusLogger());
|
|
|
|
|
|
return pgResults;
|
|
|
|
|
|
}
|
|
|
|
|
|
public PwGroup SearchForExactUrl (Database database, string url)
|
|
{
|
|
SearchParameters sp = SearchParameters.None;
|
|
sp.SearchInUrls = true;
|
|
sp.SearchString = url;
|
|
|
|
if(sp.RegularExpression) // Validate regular expression
|
|
{
|
|
new Regex(sp.SearchString);
|
|
}
|
|
|
|
string strGroupName = _app.GetResourceString(UiStringKey.search_results) + " (\"" + sp.SearchString + "\")";
|
|
PwGroup pgResults = new PwGroup(true, true, strGroupName, PwIcon.EMailSearch) {IsVirtual = true};
|
|
|
|
PwObjectList<PwEntry> listResults = pgResults.Entries;
|
|
|
|
|
|
database.Root.SearchEntries(sp, listResults, new NullStatusLogger());
|
|
|
|
|
|
return pgResults;
|
|
|
|
}
|
|
|
|
private String extractHost(String url)
|
|
{
|
|
return UrlUtil.GetHost(url.Trim());
|
|
}
|
|
|
|
public PwGroup SearchForHost(Database database, String url, bool allowSubdomains)
|
|
{
|
|
String host = extractHost(url);
|
|
string strGroupName = _app.GetResourceString(UiStringKey.search_results) + " (\"" + host + "\")";
|
|
PwGroup pgResults = new PwGroup(true, true, strGroupName, PwIcon.EMailSearch) {IsVirtual = true};
|
|
if (String.IsNullOrWhiteSpace(host))
|
|
return pgResults;
|
|
foreach (PwEntry entry in database.Entries.Values)
|
|
{
|
|
String otherHost = extractHost(entry.Strings.ReadSafe(PwDefs.UrlField));
|
|
if ((allowSubdomains) && (otherHost.StartsWith("www.")))
|
|
otherHost = otherHost.Substring(4); //remove "www."
|
|
if (String.IsNullOrWhiteSpace(otherHost))
|
|
{
|
|
continue;
|
|
}
|
|
if (host.IndexOf(otherHost, StringComparison.InvariantCultureIgnoreCase) > -1)
|
|
{
|
|
pgResults.AddEntry(entry, false);
|
|
}
|
|
}
|
|
return pgResults;
|
|
}
|
|
|
|
}
|
|
}
|
|
|