1
0
mirror of https://github.com/bitwarden/mobile synced 2025-12-26 05:03:39 +00:00

parse IP addresses as base domains

This commit is contained in:
Kyle Spearrin
2017-09-06 23:08:24 -04:00
parent 8922459418
commit f5dd91afe5
4 changed files with 33 additions and 17 deletions

View File

@@ -4,12 +4,18 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions;
namespace Bit.App.Models
{
// ref: https://github.com/danesparza/domainname-parser
public class DomainName
{
private const string IpRegex = "^(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]?)$";
private string _subDomain = string.Empty;
private string _domain = string.Empty;
private string _tld = string.Empty;
@@ -59,6 +65,20 @@ namespace Bit.App.Models
return retval;
}
public static bool TryParseBaseDomain(string domainString, out string result)
{
if(Regex.IsMatch(domainString, IpRegex))
{
result = domainString;
return true;
}
DomainName domain;
var retval = TryParse(domainString, out domain);
result = domain?.BaseDomain;
return retval;
}
private static void ParseDomainName(string domainString, out string TLD, out string SLD, out string SubDomain, out TLDRule MatchingRule)
{
// Make sure domain is all lowercase

View File

@@ -115,10 +115,10 @@ namespace Bit.App.Models.Page
return Uri;
}
DomainName domain;
if(DomainName.TryParse(uri.Host, out domain))
string domain;
if(DomainName.TryParseBaseDomain(uri.Host, out domain))
{
return domain.BaseDomain;
return domain;
}
return uri.Host;