diff --git a/Scripts/Create-WhoisServerListFromWebAndWhois.ps1 b/Scripts/Create-WhoisServerListFromWebAndWhois.ps1 new file mode 100644 index 0000000000..bc716f0566 --- /dev/null +++ b/Scripts/Create-WhoisServerListFromWebAndWhois.ps1 @@ -0,0 +1,73 @@ +# Filepath in the resources +[string]$OutFilePath = Join-Path -Path (Split-Path $PSScriptRoot -Parent) -ChildPath "Source\NETworkManager\Resources\WhoisServers.xml" + +$IANA_TLDs = (Invoke-WebRequest -Uri "https://data.iana.org/TLD/tlds-alpha-by-domain.txt").Content -split "[`r|`n]" + +# Create xml document +[xml]$Document = New-Object System.Xml.XmlDocument +$Declaration = $Document.CreateXmlDeclaration("1.0", "UTF-8", $null) + +[void]$Document.AppendChild($Declaration) + +# Description +$Description = @" +Whois servers by domain from IANA +Generated $(Get-Date) +"@ + +[void]$Document.AppendChild($Document.CreateComment($Description)) + +# Root node +$RootNode = $Document.CreateNode("element", "WhoisServers", $null) + +$ProgressCount = 0 + +foreach($Tld in $IANA_TLDs) +{ + if($Tld.StartsWith("#")) + { + continue + } + + $currentTld = $Tld.Trim() + + $tcpClient = New-Object System.Net.Sockets.TcpClient("whois.iana.org", 43) + + $networkStream= $tcpClient.GetStream() + + $bufferedStream = New-Object System.IO.BufferedStream($networkStream) + + $streamWriter = New-Object System.IO.StreamWriter($bufferedStream) + + $streamWriter.WriteLine($currentTld) + $streamWriter.Flush() + + $streamReader = New-Object System.IO.StreamReader($bufferedStream) + + $stringBuilder = New-Object System.Text.StringBuilder + + while(!$streamReader.EndOfStream) + { + $stringBuilder.Append($streamReader.ReadLine()) + } + + $WhoisServer = (($stringBuilder.ToString() -split "whois:")[1] -split "status:")[0].Trim() + + $WhoisServerNode = $Document.CreateNode("element", "WhoisServer", $null) + + $TldElement = $Document.CreateElement("TLD") + $TldElement.InnerText = $currentTld + [void]$WhoisServerNode.AppendChild($TldElement) + + $ServerElement = $Document.CreateElement("Server") + $ServerElement.InnerText = $WhoisServer + [void]$WhoisServerNode.AppendChild($ServerElement) + + [void]$RootNode.AppendChild($WhoisServerNode) + + Write-Host -Object "Progress: $ProgressCount from $($IANA_TLDs.Count)" + $ProgressCount ++ +} + +[void]$Document.AppendChild($RootNode) +$Document.Save($OutFilePath) \ No newline at end of file diff --git a/Source/NETworkManager/ApplicationViewManager.cs b/Source/NETworkManager/ApplicationViewManager.cs index 47c106e06a..6a3329c6e3 100644 --- a/Source/NETworkManager/ApplicationViewManager.cs +++ b/Source/NETworkManager/ApplicationViewManager.cs @@ -44,19 +44,21 @@ public static string GetTranslatedNameByName(Name name) case Name.SNMP: return Resources.Localization.Strings.SNMP; case Name.WakeOnLAN: - return Resources.Localization.Strings.WakeOnLAN; - case Name.HTTPHeaders: - return Resources.Localization.Strings.HTTPHeaders; + return Resources.Localization.Strings.WakeOnLAN; case Name.SubnetCalculator: return Resources.Localization.Strings.SubnetCalculator; case Name.Lookup: return Resources.Localization.Strings.Lookup; + case Name.Whois: + return Resources.Localization.Strings.Whois; + case Name.HTTPHeaders: + return Resources.Localization.Strings.HTTPHeaders; case Name.Connections: return Resources.Localization.Strings.Connections; case Name.Listeners: return Resources.Localization.Strings.Listeners; case Name.ARPTable: - return Resources.Localization.Strings.ARPTable; + return Resources.Localization.Strings.ARPTable; default: return "Name not found!"; } @@ -98,15 +100,18 @@ public static Canvas GetIconByName(Name name) case Name.WakeOnLAN: canvas.Children.Add(new PackIconMaterial { Kind = PackIconMaterialKind.Power }); break; - case Name.HTTPHeaders: - canvas.Children.Add(new PackIconMaterial { Kind = PackIconMaterialKind.Web }); - break; case Name.SubnetCalculator: canvas.Children.Add(new PackIconModern { Kind = PackIconModernKind.Calculator }); break; case Name.Lookup: canvas.Children.Add(new PackIconMaterial { Kind = PackIconMaterialKind.Magnify }); break; + case Name.Whois: + canvas.Children.Add(new PackIconMaterial { Kind = PackIconMaterialKind.CloudSearchOutline }); + break; + case Name.HTTPHeaders: + canvas.Children.Add(new PackIconMaterial { Kind = PackIconMaterialKind.Web }); + break; case Name.Connections: canvas.Children.Add(new PackIconModern { Kind = PackIconModernKind.Connect }); break; @@ -136,10 +141,11 @@ public enum Name RemoteDesktop, PuTTY, SNMP, - WakeOnLAN, - HTTPHeaders, + WakeOnLAN, SubnetCalculator, Lookup, + Whois, + HTTPHeaders, Connections, Listeners, ARPTable diff --git a/Source/NETworkManager/Controls/DragablzTabHostWindow.xaml.cs b/Source/NETworkManager/Controls/DragablzTabHostWindow.xaml.cs index 8fef7683db..d8abaf40a0 100644 --- a/Source/NETworkManager/Controls/DragablzTabHostWindow.xaml.cs +++ b/Source/NETworkManager/Controls/DragablzTabHostWindow.xaml.cs @@ -111,6 +111,9 @@ private void CloseItemAction(ItemActionCallbackArgs args) break; case ApplicationViewManager.Name.Lookup: break; + case ApplicationViewManager.Name.Whois: + ((WhoisView)((DragablzTabItem)args.DragablzItem.Content).View).CloseTab(); + break; case ApplicationViewManager.Name.Connections: break; case ApplicationViewManager.Name.Listeners: diff --git a/Source/NETworkManager/MainWindow.xaml.cs b/Source/NETworkManager/MainWindow.xaml.cs index 4d59227031..cdf9564fb3 100644 --- a/Source/NETworkManager/MainWindow.xaml.cs +++ b/Source/NETworkManager/MainWindow.xaml.cs @@ -20,6 +20,7 @@ using System.Windows.Markup; using NETworkManager.Models.Update; using NETworkManager.Models.Documentation; +using NETworkManager.Models.Network; using ContextMenu = System.Windows.Controls.ContextMenu; namespace NETworkManager @@ -248,6 +249,10 @@ public MainWindow() // Language Meta LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(LocalizationManager.Culture.IetfLanguageTag))); + // Update settings + if (AssemblyManager.Current.Version > new Version(SettingsManager.Current.SettingsVersion)) + SettingsManager.Update(AssemblyManager.Current.Version, new Version(SettingsManager.Current.SettingsVersion)); + // Load appearance AppearanceManager.Load(); @@ -306,7 +311,7 @@ protected override async void OnContentRendered(EventArgs e) if (CommandLineManager.Current.Autostart && SettingsManager.Current.Autostart_StartMinimizedInTray) HideWindowToTray(); - // Chech for updates... + // Search for updates... if (SettingsManager.Current.Update_CheckForUpdatesAtStartup) CheckForUpdates(); } @@ -420,6 +425,7 @@ private async void MetroWindowMain_Closing(object sender, CancelEventArgs e) private SubnetCalculatorHostView _subnetCalculatorHostView; private HTTPHeadersHostView _httpHeadersHostView; private LookupHostView _lookupHostView; + private WhoisHostView _whoisHostView; private ConnectionsView _connectionsView; private ListenersView _listenersView; private ARPTableView _arpTableView; @@ -495,13 +501,6 @@ private void ChangeApplicationView(ApplicationViewManager.Name name) ContentControlApplication.Content = _wakeOnLanView; break; - - case ApplicationViewManager.Name.HTTPHeaders: - if (_httpHeadersHostView == null) - _httpHeadersHostView = new HTTPHeadersHostView(); - - ContentControlApplication.Content = _httpHeadersHostView; - break; case ApplicationViewManager.Name.SubnetCalculator: if (_subnetCalculatorHostView == null) _subnetCalculatorHostView = new SubnetCalculatorHostView(); @@ -514,6 +513,18 @@ private void ChangeApplicationView(ApplicationViewManager.Name name) ContentControlApplication.Content = _lookupHostView; break; + case ApplicationViewManager.Name.Whois: + if(_whoisHostView ==null) + _whoisHostView = new WhoisHostView(); + + ContentControlApplication.Content = _whoisHostView; + break; + case ApplicationViewManager.Name.HTTPHeaders: + if (_httpHeadersHostView == null) + _httpHeadersHostView = new HTTPHeadersHostView(); + + ContentControlApplication.Content = _httpHeadersHostView; + break; case ApplicationViewManager.Name.Connections: if (_connectionsView == null) _connectionsView = new ConnectionsView(); @@ -580,6 +591,8 @@ private void RefreshApplicationView(ApplicationViewManager.Name name) break; case ApplicationViewManager.Name.Lookup: break; + case ApplicationViewManager.Name.Whois: + break; case ApplicationViewManager.Name.Connections: break; case ApplicationViewManager.Name.Listeners: diff --git a/Source/NETworkManager/Models/Network/Whois.cs b/Source/NETworkManager/Models/Network/Whois.cs new file mode 100644 index 0000000000..f09fa65529 --- /dev/null +++ b/Source/NETworkManager/Models/Network/Whois.cs @@ -0,0 +1,81 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using System.Xml; +using NETworkManager.Models.Settings; + +namespace NETworkManager.Models.Network +{ + public class Whois + { + #region Variables + private static readonly string WhoisServerFilePath = + Path.Combine(ConfigurationManager.Current.ExecutionPath, "Resources", "WhoisServers.xml"); + + private static readonly List WhoisServerList; + private static readonly Lookup WhoisServers; + #endregion + + #region Constructor + + static Whois() + { + var document = new XmlDocument(); + document.Load(WhoisServerFilePath); + + WhoisServerList = new List(); + + foreach (XmlNode node in document.SelectNodes("/WhoisServers/WhoisServer")) + { + if (node == null) + continue; + + WhoisServerList.Add(new WhoisServerInfo(node.SelectSingleNode("Server")?.InnerText, node.SelectSingleNode("TLD")?.InnerText)); + } + + WhoisServers = (Lookup)WhoisServerList.ToLookup(x => x.Tld); + } + #endregion + + #region Methods + public static Task QueryAsync(string domain, string whoisServer) + { + return Task.Run(() => Query(domain, whoisServer)); + } + + public static string Query(string domain, string whoisServer) + { + var tcpClient = new TcpClient(whoisServer, 43); + + var networkStream = tcpClient.GetStream(); + + var bufferedStream = new BufferedStream(networkStream); + + var streamWriter = new StreamWriter(bufferedStream); + + streamWriter.WriteLine(domain); + streamWriter.Flush(); + + var streamReader = new StreamReader(bufferedStream); + + var stringBuilder = new StringBuilder(); + + while (!streamReader.EndOfStream) + stringBuilder.AppendLine(streamReader.ReadLine()); + + return stringBuilder.ToString(); + } + + public static string GetWhoisServer(string domain) + { + var domainParts = domain.Split('.'); + + // TLD to upper because the lookup is case sensitive + return WhoisServers[domainParts[domainParts.Length - 1].ToUpper()].FirstOrDefault()?.Server; + } + #endregion + } +} diff --git a/Source/NETworkManager/Models/Network/WhoisServerInfo.cs b/Source/NETworkManager/Models/Network/WhoisServerInfo.cs new file mode 100644 index 0000000000..da9d430f9c --- /dev/null +++ b/Source/NETworkManager/Models/Network/WhoisServerInfo.cs @@ -0,0 +1,14 @@ +namespace NETworkManager.Models.Network +{ + public class WhoisServerInfo + { + public string Server { get; set; } + public string Tld { get; set; } + + public WhoisServerInfo(string server, string tld) + { + Server = server; + Tld = tld; + } + } +} diff --git a/Source/NETworkManager/Models/Settings/SettingsInfo.cs b/Source/NETworkManager/Models/Settings/SettingsInfo.cs index 9602405601..2b8fefaa74 100644 --- a/Source/NETworkManager/Models/Settings/SettingsInfo.cs +++ b/Source/NETworkManager/Models/Settings/SettingsInfo.cs @@ -27,8 +27,22 @@ protected virtual void OnPropertyChanged([CallerMemberName] string propertyName #region Variables [XmlIgnore] public bool SettingsChanged { get; set; } - #region General + private string _settingsVersion = "0.0.0.0"; + public string SettingsVersion + { + get => _settingsVersion; + set + { + if(value == _settingsVersion) + return; + + _settingsVersion = value; + SettingsChanged = true; + } + } + + #region General // General private ApplicationViewManager.Name _general_DefaultApplicationViewName = ApplicationViewManager.Name.NetworkInterface; public ApplicationViewManager.Name General_DefaultApplicationViewName @@ -2330,6 +2344,53 @@ public ObservableCollection Lookup_Port_PortsHistory } #endregion + #region Whois + private ObservableCollection _whois_DomainHistory = new ObservableCollection(); + public ObservableCollection Whois_DomainHistory + { + get => _whois_DomainHistory; + set + { + if (value == _whois_DomainHistory) + return; + + _whois_DomainHistory = value; + SettingsChanged = true; + } + } + + private bool _whois_ExpandStatistics = true; + public bool Whois_ExpandStatistics + { + get => _whois_ExpandStatistics; + set + { + if (value == _whois_ExpandStatistics) + return; + + _whois_ExpandStatistics = value; + SettingsChanged = true; + } + } + + private bool _whois_ShowStatistics = true; + public bool Whois_ShowStatistics + { + get => _whois_ShowStatistics; + set + { + if (value == _whois_ShowStatistics) + return; + + _whois_ShowStatistics = value; + + OnPropertyChanged(); + + SettingsChanged = true; + } + } + #endregion + #region Connections private bool _connections_AutoRefresh; public bool Connections_AutoRefresh diff --git a/Source/NETworkManager/Models/Settings/SettingsManager.cs b/Source/NETworkManager/Models/Settings/SettingsManager.cs index 8753f65396..e0188a9ef1 100644 --- a/Source/NETworkManager/Models/Settings/SettingsManager.cs +++ b/Source/NETworkManager/Models/Settings/SettingsManager.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.ObjectModel; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; @@ -16,7 +18,7 @@ public static class SettingsManager private const string IsPortableExtension = "settings"; public static SettingsInfo Current { get; set; } - + public static bool ForceRestart { get; set; } public static bool HotKeysChanged { get; set; } @@ -199,5 +201,31 @@ public static void Reset() ForceRestart = true; } + + public static void Update(Version programmVersion, Version settingsVersion) + { + Debug.WriteLine(settingsVersion); + + // Version is 0.0.0.0 on first run or settings reset --> skip updates + if (settingsVersion > new Version("0.0.0.0")) + { + var reorderApplications = false; + + // Features added in 1.7.3.0 + if (settingsVersion < new Version("1.7.3.0")) + { + Current.General_ApplicationList.Add(new ApplicationViewInfo(ApplicationViewManager.Name.Whois)); + + reorderApplications = true; + } + + // Reorder application view + if (reorderApplications) + Current.General_ApplicationList = new ObservableCollection(Current.General_ApplicationList.OrderBy(info => info.Name)); + } + + // Update settings version + Current.SettingsVersion = programmVersion.ToString(); + } } } \ No newline at end of file diff --git a/Source/NETworkManager/NETworkManager.csproj b/Source/NETworkManager/NETworkManager.csproj index ae5e82b36b..b34fffe7b2 100644 --- a/Source/NETworkManager/NETworkManager.csproj +++ b/Source/NETworkManager/NETworkManager.csproj @@ -244,6 +244,8 @@ + + @@ -287,6 +289,7 @@ + @@ -299,6 +302,8 @@ + + @@ -351,6 +356,12 @@ RemoteDesktopControl.xaml + + WhoisHostView.xaml + + + WhoisView.xaml + ProfilesView.xaml @@ -592,6 +603,9 @@ + + PreserveNewest + MSBuild:Compile Designer @@ -607,6 +621,14 @@ Designer PreserveNewest + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + MSBuild:Compile Designer diff --git a/Source/NETworkManager/Properties/AssemblyInfo.cs b/Source/NETworkManager/Properties/AssemblyInfo.cs index 852deb2260..e396af08e1 100644 --- a/Source/NETworkManager/Properties/AssemblyInfo.cs +++ b/Source/NETworkManager/Properties/AssemblyInfo.cs @@ -49,6 +49,6 @@ // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.7.2.0")] -[assembly: AssemblyFileVersion("1.7.2.0")] +[assembly: AssemblyVersion("1.7.3.0")] +[assembly: AssemblyFileVersion("1.7.3.0")] diff --git a/Source/NETworkManager/Resources/Localization/Strings.Designer.cs b/Source/NETworkManager/Resources/Localization/Strings.Designer.cs index 1d15155534..f6e7314d82 100644 --- a/Source/NETworkManager/Resources/Localization/Strings.Designer.cs +++ b/Source/NETworkManager/Resources/Localization/Strings.Designer.cs @@ -159,6 +159,15 @@ public static string AddATabToQueryTheHTTPHeaders { } } + /// + /// Looks up a localized string similar to Add a tab to query whois.... + /// + public static string AddATabToQueryWhois { + get { + return ResourceManager.GetString("AddATabToQueryWhois", resourceCulture); + } + } + /// /// Looks up a localized string similar to Add credentials. /// @@ -1545,6 +1554,15 @@ public static string EnterValidBaud { } } + /// + /// Looks up a localized string similar to Enter a valid domain (like "example.com")!. + /// + public static string EnterValidDomain { + get { + return ResourceManager.GetString("EnterValidDomain", resourceCulture); + } + } + /// /// Looks up a localized string similar to Enter valid hosts (multiple hosts can not end with ";")!. /// @@ -1734,6 +1752,15 @@ public static string ExampleCredentialName { } } + /// + /// Looks up a localized string similar to example.com. + /// + public static string ExampleDomain { + get { + return ResourceManager.GetString("ExampleDomain", resourceCulture); + } + } + /// /// Looks up a localized string similar to Servers. /// @@ -5507,6 +5534,24 @@ public static string White { } } + /// + /// Looks up a localized string similar to Whois. + /// + public static string Whois { + get { + return ResourceManager.GetString("Whois", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Whois server not found for the domain: "{0}". + /// + public static string WhoisServerNotFoundForTheDomain { + get { + return ResourceManager.GetString("WhoisServerNotFoundForTheDomain", resourceCulture); + } + } + /// /// Looks up a localized string similar to Width. /// diff --git a/Source/NETworkManager/Resources/Localization/Strings.resx b/Source/NETworkManager/Resources/Localization/Strings.resx index 6e6d664912..941cb01df8 100644 --- a/Source/NETworkManager/Resources/Localization/Strings.resx +++ b/Source/NETworkManager/Resources/Localization/Strings.resx @@ -1955,4 +1955,19 @@ If you click "Move & Restart", the remaining files will be copied and the ap Visible applications in the bar: + + Whois + + + Add a tab to query whois... + + + Enter a valid domain (like "example.com")! + + + Whois server not found for the domain: "{0}" + + + example.com + \ No newline at end of file diff --git a/Source/NETworkManager/Resources/WhoisServers.xml b/Source/NETworkManager/Resources/WhoisServers.xml new file mode 100644 index 0000000000..93c4cb2995 --- /dev/null +++ b/Source/NETworkManager/Resources/WhoisServers.xml @@ -0,0 +1,6496 @@ + + + + + AAA + + + + + AARP + whois.nic.aarp + + + ABARTH + whois.afilias-srs.net + + + ABB + + + + + ABBOTT + whois.afilias-srs.net + + + ABBVIE + whois.afilias-srs.net + + + ABC + whois.nic.abc + + + ABLE + + + + + ABOGADO + whois.nic.abogado + + + ABUDHABI + whois.nic.abudhabi + + + AC + whois.nic.ac + + + ACADEMY + whois.nic.academy + + + ACCENTURE + + + + + ACCOUNTANT + whois.nic.accountant + + + ACCOUNTANTS + whois.nic.accountants + + + ACO + whois.afilias-srs.net + + + ACTIVE + whois.afilias-srs.net + + + ACTOR + whois.nic.actor + + + AD + + + + + ADAC + whois.nic.adac + + + ADS + whois.nic.google + + + ADULT + whois.afilias-srs.net + + + AE + whois.aeda.net.ae + + + AEG + whois.nic.aeg + + + AERO + whois.aero + + + AETNA + + + + + AF + whois.nic.af + + + AFAMILYCOMPANY + whois.nic.afamilycompany + + + AFL + whois.nic.afl + + + AFRICA + africa-whois.registry.net.za + + + AG + whois.nic.ag + + + AGAKHAN + whois.afilias-srs.net + + + AGENCY + whois.nic.agency + + + AI + whois.nic.ai + + + AIG + + + + + AIGO + whois.afilias-srs.net + + + AIRBUS + whois.nic.airbus + + + AIRFORCE + whois.nic.airforce + + + AIRTEL + whois.nic.airtel + + + AKDN + whois.afilias-srs.net + + + AL + + + + + ALFAROMEO + whois.afilias-srs.net + + + ALIBABA + whois.nic.alibaba + + + ALIPAY + whois.nic.alipay + + + ALLFINANZ + whois.ksregistry.net + + + ALLSTATE + whois.afilias-srs.net + + + ALLY + whois.nic.ally + + + ALSACE + whois-alsace.nic.fr + + + ALSTOM + whois.nic.alstom + + + AM + whois.amnic.net + + + AMERICANEXPRESS + + + + + AMERICANFAMILY + whois.nic.americanfamily + + + AMEX + + + + + AMFAM + whois.nic.amfam + + + AMICA + + + + + AMSTERDAM + + + + + ANALYTICS + + + + + ANDROID + whois.nic.google + + + ANQUAN + whois.teleinfo.cn + + + ANZ + whois.nic.anz + + + AO + + + + + AOL + whois.nic.aol + + + APARTMENTS + whois.nic.apartments + + + APP + whois.nic.google + + + APPLE + whois.afilias-srs.net + + + AQ + + + + + AQUARELLE + whois-aquarelle.nic.fr + + + AR + whois.nic.ar + + + ARAB + whois.nic.arab + + + ARAMCO + + + + + ARCHI + whois.afilias.net + + + ARMY + whois.nic.army + + + ARPA + whois.iana.org + + + ART + whois.nic.art + + + ARTE + whois.nic.arte + + + AS + whois.nic.as + + + ASDA + whois.nic.asda + + + ASIA + whois.nic.asia + + + ASSOCIATES + whois.nic.associates + + + AT + whois.nic.at + + + ATHLETA + + + + + ATTORNEY + whois.nic.attorney + + + AU + whois.auda.org.au + + + AUCTION + whois.nic.auction + + + AUDI + whois.afilias-srs.net + + + AUDIBLE + + + + + AUDIO + whois.uniregistry.net + + + AUSPOST + whois.nic.auspost + + + AUTHOR + + + + + AUTO + whois.uniregistry.net + + + AUTOS + whois.afilias-srs.net + + + AVIANCA + whois.afilias-srs.net + + + AW + whois.nic.aw + + + AWS + + + + + AX + whois.ax + + + AXA + + + + + AZ + + + + + AZURE + + + + + BA + + + + + BABY + + + + + BAIDU + whois.gtld.knet.cn + + + BANAMEX + + + + + BANANAREPUBLIC + + + + + BAND + whois.nic.band + + + BANK + whois.nic.bank + + + BAR + whois.nic.bar + + + BARCELONA + whois.nic.barcelona + + + BARCLAYCARD + whois.nic.barclaycard + + + BARCLAYS + whois.nic.barclays + + + BAREFOOT + whois.nic.barefoot + + + BARGAINS + whois.nic.bargains + + + BASEBALL + + + + + BASKETBALL + whois.nic.basketball + + + BAUHAUS + whois.nic.bauhaus + + + BAYERN + whois.nic.bayern + + + BB + + + + + BBC + whois.nic.bbc + + + BBT + whois.nic.bbt + + + BBVA + whois.nic.bbva + + + BCG + whois.nic.bcg + + + BCN + whois.nic.bcn + + + BD + + + + + BE + whois.dns.be + + + BEATS + whois.afilias-srs.net + + + BEAUTY + whois.nic.beauty + + + BEER + whois.nic.beer + + + BENTLEY + whois.nic.bentley + + + BERLIN + whois.nic.berlin + + + BEST + whois.nic.best + + + BESTBUY + whois.nic.bestbuy + + + BET + whois.afilias.net + + + BF + + + + + BG + whois.register.bg + + + BH + + + + + BHARTI + + + + + BI + whois1.nic.bi + + + BIBLE + whois.nic.bible + + + BID + whois.nic.bid + + + BIKE + whois.nic.bike + + + BING + + + + + BINGO + whois.nic.bingo + + + BIO + whois.afilias.net + + + BIZ + whois.biz + + + BJ + whois.nic.bj + + + BLACK + whois.afilias.net + + + BLACKFRIDAY + whois.uniregistry.net + + + BLANCO + whois.nic.blanco + + + BLOCKBUSTER + whois.nic.blockbuster + + + BLOG + whois.nic.blog + + + BLOOMBERG + + + + + BLUE + whois.afilias.net + + + BM + + + + + BMS + whois.nic.bms + + + BMW + whois.ksregistry.net + + + BN + whois.bnnic.bn + + + BNL + whois.nic.bnl + + + BNPPARIBAS + whois.afilias-srs.net + + + BO + whois.nic.bo + + + BOATS + whois.afilias-srs.net + + + BOEHRINGER + whois.afilias-srs.net + + + BOFA + whois.nic.bofa + + + BOM + whois.gtlds.nic.br + + + BOND + whois.nic.bond + + + BOO + whois.nic.google + + + BOOK + + + + + BOOKING + + + + + BOSCH + whois.nic.bosch + + + BOSTIK + whois-bostik.nic.fr + + + BOSTON + whois.nic.boston + + + BOT + + + + + BOUTIQUE + whois.nic.boutique + + + BOX + whois.aridnrs.net.au + + + BR + whois.registro.br + + + BRADESCO + whois.nic.bradesco + + + BRIDGESTONE + whois.nic.bridgestone + + + BROADWAY + whois.nic.broadway + + + BROKER + whois.nic.broker + + + BROTHER + whois.nic.brother + + + BRUSSELS + whois.nic.brussels + + + BS + + + + + BT + + + + + BUDAPEST + whois.nic.budapest + + + BUGATTI + whois.afilias-srs.net + + + BUILD + whois.nic.build + + + BUILDERS + whois.nic.builders + + + BUSINESS + whois.nic.business + + + BUY + whois.afilias-srs.net + + + BUZZ + + + + + BV + + + + + BW + whois.nic.net.bw + + + BY + whois.cctld.by + + + BZ + + + + + BZH + whois.nic.bzh + + + CA + whois.cira.ca + + + CAB + whois.nic.cab + + + CAFE + whois.nic.cafe + + + CAL + whois.nic.google + + + CALL + + + + + CALVINKLEIN + + + + + CAM + whois.ksregistry.net + + + CAMERA + whois.nic.camera + + + CAMP + whois.nic.camp + + + CANCERRESEARCH + whois.nic.cancerresearch + + + CANON + whois.nic.canon + + + CAPETOWN + capetown-whois.registry.net.za + + + CAPITAL + whois.nic.capital + + + CAPITALONE + whois.nic.capitalone + + + CAR + whois.uniregistry.net + + + CARAVAN + + + + + CARDS + whois.nic.cards + + + CARE + whois.nic.care + + + CAREER + whois.nic.career + + + CAREERS + whois.nic.careers + + + CARS + whois.uniregistry.net + + + CARTIER + + + + + CASA + whois.nic.casa + + + CASE + whois.nic.case + + + CASEIH + whois.nic.caseih + + + CASH + whois.nic.cash + + + CASINO + whois.nic.casino + + + CAT + whois.nic.cat + + + CATERING + whois.nic.catering + + + CATHOLIC + whois.aridnrs.net.au + + + CBA + whois.nic.cba + + + CBN + + + + + CBRE + + + + + CBS + whois.afilias-srs.net + + + CC + ccwhois.verisign-grs.com + + + CD + + + + + CEB + whois.afilias-srs.net + + + CENTER + whois.nic.center + + + CEO + whois.nic.ceo + + + CERN + whois.afilias-srs.net + + + CF + whois.dot.cf + + + CFA + whois.nic.cfa + + + CFD + whois.nic.cfd + + + CG + + + + + CH + whois.nic.ch + + + CHANEL + whois.nic.chanel + + + CHANNEL + whois.nic.google + + + CHARITY + whois.nic.charity + + + CHASE + + + + + CHAT + whois.nic.chat + + + CHEAP + whois.nic.cheap + + + CHINTAI + whois.nic.chintai + + + CHRISTMAS + whois.uniregistry.net + + + CHROME + whois.nic.google + + + CHRYSLER + whois.afilias-srs.net + + + CHURCH + whois.nic.church + + + CI + whois.nic.ci + + + CIPRIANI + whois.afilias-srs.net + + + CIRCLE + + + + + CISCO + + + + + CITADEL + + + + + CITI + + + + + CITIC + + + + + CITY + whois.nic.city + + + CITYEATS + whois.nic.cityeats + + + CK + + + + + CL + whois.nic.cl + + + CLAIMS + whois.nic.claims + + + CLEANING + whois.nic.cleaning + + + CLICK + whois.uniregistry.net + + + CLINIC + whois.nic.clinic + + + CLINIQUE + whois.nic.clinique + + + CLOTHING + whois.nic.clothing + + + CLOUD + whois.nic.cloud + + + CLUB + whois.nic.club + + + CLUBMED + whois.nic.clubmed + + + CM + + + + + CN + whois.cnnic.cn + + + CO + whois.nic.co + + + COACH + whois.nic.coach + + + CODES + whois.nic.codes + + + COFFEE + whois.nic.coffee + + + COLLEGE + whois.nic.college + + + COLOGNE + whois.ryce-rsp.com + + + COM + whois.verisign-grs.com + + + COMCAST + whois.nic.comcast + + + COMMBANK + whois.nic.commbank + + + COMMUNITY + whois.nic.community + + + COMPANY + whois.nic.company + + + COMPARE + whois.nic.compare + + + COMPUTER + whois.nic.computer + + + COMSEC + whois.nic.comsec + + + CONDOS + whois.nic.condos + + + CONSTRUCTION + whois.nic.construction + + + CONSULTING + whois.nic.consulting + + + CONTACT + whois.nic.contact + + + CONTRACTORS + whois.nic.contractors + + + COOKING + whois.nic.cooking + + + COOKINGCHANNEL + whois.nic.cookingchannel + + + COOL + whois.nic.cool + + + COOP + whois.nic.coop + + + CORSICA + whois-corsica.nic.fr + + + COUNTRY + whois-dub.mm-registry.com + + + COUPON + + + + + COUPONS + whois.nic.coupons + + + COURSES + whois.aridnrs.net.au + + + CR + whois.nic.cr + + + CREDIT + whois.nic.credit + + + CREDITCARD + whois.nic.creditcard + + + CREDITUNION + whois.afilias-srs.net + + + CRICKET + whois.nic.cricket + + + CROWN + + + + + CRS + + + + + CRUISE + whois.nic.cruise + + + CRUISES + whois.nic.cruises + + + CSC + whois.nic.csc + + + CU + + + + + CUISINELLA + whois.nic.cuisinella + + + CV + + + + + CW + + + + + CX + whois.nic.cx + + + CY + + + + + CYMRU + whois.nic.cymru + + + CYOU + whois.nic.cyou + + + CZ + whois.nic.cz + + + DABUR + whois.afilias-srs.net + + + DAD + whois.nic.google + + + DANCE + whois.nic.dance + + + DATA + whois.nic.data + + + DATE + whois.nic.date + + + DATING + whois.nic.dating + + + DATSUN + whois.nic.gmo + + + DAY + whois.nic.google + + + DCLK + whois.nic.google + + + DDS + whois.nic.dds + + + DE + whois.denic.de + + + DEAL + + + + + DEALER + + + + + DEALS + whois.nic.deals + + + DEGREE + whois.nic.degree + + + DELIVERY + whois.nic.delivery + + + DELL + + + + + DELOITTE + whois.nic.deloitte + + + DELTA + whois.nic.delta + + + DEMOCRAT + whois.nic.democrat + + + DENTAL + whois.nic.dental + + + DENTIST + whois.nic.dentist + + + DESI + whois.ksregistry.net + + + DESIGN + whois.nic.design + + + DEV + whois.nic.google + + + DHL + + + + + DIAMONDS + whois.nic.diamonds + + + DIET + whois.uniregistry.net + + + DIGITAL + whois.nic.digital + + + DIRECT + whois.nic.direct + + + DIRECTORY + whois.nic.directory + + + DISCOUNT + whois.nic.discount + + + DISCOVER + + + + + DISH + whois.nic.dish + + + DIY + whois.nic.diy + + + DJ + + + + + DK + whois.dk-hostmaster.dk + + + DM + whois.nic.dm + + + DNP + + + + + DO + whois.nic.do + + + DOCS + whois.nic.google + + + DOCTOR + whois.nic.doctor + + + DODGE + whois.afilias-srs.net + + + DOG + whois.nic.dog + + + DOHA + whois.nic.doha + + + DOMAINS + whois.nic.domains + + + DOT + whois.nic.dot + + + DOWNLOAD + whois.nic.download + + + DRIVE + whois.nic.google + + + DTV + whois.nic.dtv + + + DUBAI + whois.nic.dubai + + + DUCK + whois.nic.duck + + + DUNLOP + whois.nic.dunlop + + + DUNS + + + + + DUPONT + + + + + DURBAN + durban-whois.registry.net.za + + + DVAG + whois.ksregistry.net + + + DVR + whois.nic.dvr + + + DZ + whois.nic.dz + + + EARTH + + + + + EAT + whois.nic.google + + + EC + whois.nic.ec + + + ECO + whois.afilias-srs.net + + + EDEKA + whois.afilias-srs.net + + + EDU + whois.educause.edu + + + EDUCATION + whois.nic.education + + + EE + whois.tld.ee + + + EG + + + + + EMAIL + whois.nic.email + + + EMERCK + whois.afilias-srs.net + + + ENERGY + whois.nic.energy + + + ENGINEER + whois.nic.engineer + + + ENGINEERING + whois.nic.engineering + + + ENTERPRISES + whois.nic.enterprises + + + EPOST + + + + + EPSON + whois.aridnrs.net.au + + + EQUIPMENT + whois.nic.equipment + + + ER + + + + + ERICSSON + whois.nic.ericsson + + + ERNI + whois.nic.erni + + + ES + whois.nic.es + + + ESQ + whois.nic.google + + + ESTATE + whois.nic.estate + + + ESURANCE + whois.afilias-srs.net + + + ET + + + + + ETISALAT + whois.centralnic.com + + + EU + whois.eu + + + EUROVISION + whois.nic.eurovision + + + EUS + whois.nic.eus + + + EVENTS + whois.nic.events + + + EVERBANK + + + + + EXCHANGE + whois.nic.exchange + + + EXPERT + whois.nic.expert + + + EXPOSED + whois.nic.exposed + + + EXPRESS + whois.nic.express + + + EXTRASPACE + whois.afilias-srs.net + + + FAGE + whois.afilias-srs.net + + + FAIL + whois.nic.fail + + + FAIRWINDS + whois.nic.fairwinds + + + FAITH + whois.nic.faith + + + FAMILY + whois.nic.family + + + FAN + whois.nic.fan + + + FANS + whois.nic.fans + + + FARM + whois.nic.farm + + + FARMERS + + + + + FASHION + whois.nic.fashion + + + FAST + + + + + FEDEX + whois.nic.fedex + + + FEEDBACK + whois.nic.feedback + + + FERRARI + whois.nic.ferrari + + + FERRERO + + + + + FI + whois.fi + + + FIAT + whois.afilias-srs.net + + + FIDELITY + whois.nic.fidelity + + + FIDO + whois.afilias-srs.net + + + FILM + whois.nic.film + + + FINAL + whois.gtlds.nic.br + + + FINANCE + whois.nic.finance + + + FINANCIAL + whois.nic.financial + + + FIRE + + + + + FIRESTONE + whois.nic.firestone + + + FIRMDALE + whois.nic.firmdale + + + FISH + whois.nic.fish + + + FISHING + whois.nic.fishing + + + FIT + whois.nic.fit + + + FITNESS + whois.nic.fitness + + + FJ + + + + + FK + + + + + FLICKR + + + + + FLIGHTS + whois.nic.flights + + + FLIR + + + + + FLORIST + whois.nic.florist + + + FLOWERS + whois.uniregistry.net + + + FLY + whois.nic.google + + + FM + + + + + FO + whois.nic.fo + + + FOO + whois.nic.google + + + FOOD + + + + + FOODNETWORK + whois.nic.foodnetwork + + + FOOTBALL + whois.nic.football + + + FORD + + + + + FOREX + whois.nic.forex + + + FORSALE + whois.nic.forsale + + + FORUM + whois.nic.forum + + + FOUNDATION + whois.nic.foundation + + + FOX + + + + + FR + whois.nic.fr + + + FREE + + + + + FRESENIUS + whois.ksregistry.net + + + FRL + whois.nic.frl + + + FROGANS + whois.nic.frogans + + + FRONTDOOR + whois.nic.frontdoor + + + FRONTIER + + + + + FTR + + + + + FUJITSU + whois.nic.gmo + + + FUJIXEROX + whois.nic.fujixerox + + + FUN + whois.nic.fun + + + FUND + whois.nic.fund + + + FURNITURE + whois.nic.furniture + + + FUTBOL + whois.nic.futbol + + + FYI + whois.nic.fyi + + + GA + + + + + GAL + whois.nic.gal + + + GALLERY + whois.nic.gallery + + + GALLO + whois.nic.gallo + + + GALLUP + whois.nic.gallup + + + GAME + whois.uniregistry.net + + + GAMES + whois.nic.games + + + GAP + + + + + GARDEN + whois.nic.garden + + + GB + + + + + GBIZ + whois.nic.google + + + GD + whois.nic.gd + + + GDN + whois.nic.gdn + + + GE + whois.registration.ge + + + GEA + whois.afilias-srs.net + + + GENT + whois.nic.gent + + + GENTING + whois.nic.genting + + + GEORGE + whois.nic.george + + + GF + whois.mediaserv.net + + + GG + whois.gg + + + GGEE + whois.nic.ggee + + + GH + + + + + GI + whois2.afilias-grs.net + + + GIFT + whois.uniregistry.net + + + GIFTS + whois.nic.gifts + + + GIVES + whois.nic.gives + + + GIVING + whois.nic.giving + + + GL + whois.nic.gl + + + GLADE + whois.nic.glade + + + GLASS + whois.nic.glass + + + GLE + whois.nic.google + + + GLOBAL + whois.nic.global + + + GLOBO + whois.gtlds.nic.br + + + GM + + + + + GMAIL + whois.nic.google + + + GMBH + whois.nic.gmbh + + + GMO + + + + + GMX + whois-fe1.gmx.tango.knipp.de + + + GN + + + + + GODADDY + whois.afilias-srs.net + + + GOLD + whois.nic.gold + + + GOLDPOINT + whois.nic.goldpoint + + + GOLF + whois.nic.golf + + + GOO + whois.nic.gmo + + + GOODYEAR + whois.nic.goodyear + + + GOOG + whois.nic.google + + + GOOGLE + whois.nic.google + + + GOP + whois.nic.gop + + + GOT + + + + + GOV + whois.dotgov.gov + + + GP + + + + + GQ + whois.dominio.gq + + + GR + + + + + GRAINGER + + + + + GRAPHICS + whois.nic.graphics + + + GRATIS + whois.nic.gratis + + + GREEN + whois.afilias.net + + + GRIPE + whois.nic.gripe + + + GROCERY + + + + + GROUP + whois.nic.group + + + GS + whois.nic.gs + + + GT + + + + + GU + + + + + GUARDIAN + + + + + GUCCI + + + + + GUGE + whois.nic.google + + + GUIDE + whois.nic.guide + + + GUITARS + whois.uniregistry.net + + + GURU + whois.nic.guru + + + GW + + + + + GY + whois.registry.gy + + + HAIR + + + + + HAMBURG + whois.nic.hamburg + + + HANGOUT + whois.nic.google + + + HAUS + whois.nic.haus + + + HBO + + + + + HDFC + whois.nic.hdfc + + + HDFCBANK + whois.nic.hdfcbank + + + HEALTH + + + + + HEALTHCARE + whois.nic.healthcare + + + HELP + whois.uniregistry.net + + + HELSINKI + whois.nic.helsinki + + + HERE + whois.nic.google + + + HERMES + whois.afilias-srs.net + + + HGTV + whois.nic.hgtv + + + HIPHOP + whois.uniregistry.net + + + HISAMITSU + whois.nic.gmo + + + HITACHI + whois.nic.gmo + + + HIV + whois.uniregistry.net + + + HK + whois.hkirc.hk + + + HKT + whois.nic.hkt + + + HM + whois.registry.hm + + + HN + whois.nic.hn + + + HOCKEY + whois.nic.hockey + + + HOLDINGS + whois.nic.holdings + + + HOLIDAY + whois.nic.holiday + + + HOMEDEPOT + whois.nic.homedepot + + + HOMEGOODS + + + + + HOMES + whois.afilias-srs.net + + + HOMESENSE + + + + + HONDA + whois.nic.honda + + + HONEYWELL + + + + + HORSE + whois.nic.horse + + + HOSPITAL + whois.nic.hospital + + + HOST + whois.nic.host + + + HOSTING + whois.uniregistry.net + + + HOT + + + + + HOTELES + + + + + HOTELS + + + + + HOTMAIL + + + + + HOUSE + whois.nic.house + + + HOW + whois.nic.google + + + HR + whois.dns.hr + + + HSBC + + + + + HT + whois.nic.ht + + + HU + whois.nic.hu + + + HUGHES + whois.nic.hughes + + + HYATT + + + + + HYUNDAI + whois.nic.hyundai + + + IBM + whois.nic.ibm + + + ICBC + whois.nic.icbc + + + ICE + whois.nic.ice + + + ICU + whois.nic.icu + + + ID + whois.id + + + IE + whois.iedr.ie + + + IEEE + + + + + IFM + whois.nic.ifm + + + IKANO + whois.ikano.tld-box.at + + + IL + whois.isoc.org.il + + + IM + whois.nic.im + + + IMAMAT + whois.afilias-srs.net + + + IMDB + + + + + IMMO + whois.nic.immo + + + IMMOBILIEN + whois.nic.immobilien + + + IN + whois.inregistry.net + + + INC + whois.nic.inc + + + INDUSTRIES + whois.nic.industries + + + INFINITI + whois.nic.gmo + + + INFO + whois.afilias.net + + + ING + whois.nic.google + + + INK + whois.nic.ink + + + INSTITUTE + whois.nic.institute + + + INSURANCE + whois.nic.insurance + + + INSURE + whois.nic.insure + + + INT + whois.iana.org + + + INTEL + + + + + INTERNATIONAL + whois.nic.international + + + INTUIT + + + + + INVESTMENTS + whois.nic.investments + + + IO + whois.nic.io + + + IPIRANGA + + + + + IQ + whois.cmc.iq + + + IR + whois.nic.ir + + + IRISH + whois.nic.irish + + + IS + whois.isnic.is + + + ISELECT + whois.nic.iselect + + + ISMAILI + whois.afilias-srs.net + + + IST + whois.afilias-srs.net + + + ISTANBUL + whois.afilias-srs.net + + + IT + whois.nic.it + + + ITAU + + + + + ITV + whois.afilias-srs.net + + + IVECO + whois.nic.iveco + + + JAGUAR + whois.nic.jaguar + + + JAVA + whois.nic.java + + + JCB + whois.nic.gmo + + + JCP + whois.afilias-srs.net + + + JE + whois.je + + + JEEP + whois.afilias-srs.net + + + JETZT + whois.nic.jetzt + + + JEWELRY + whois.nic.jewelry + + + JIO + whois.nic.jio + + + JLL + whois.afilias-srs.net + + + JM + + + + + JMP + + + + + JNJ + + + + + JO + + + + + JOBS + whois.nic.jobs + + + JOBURG + joburg-whois.registry.net.za + + + JOT + + + + + JOY + + + + + JP + whois.jprs.jp + + + JPMORGAN + + + + + JPRS + + + + + JUEGOS + whois.uniregistry.net + + + JUNIPER + whois.nic.juniper + + + KAUFEN + whois.nic.kaufen + + + KDDI + whois.nic.kddi + + + KE + whois.kenic.or.ke + + + KERRYHOTELS + whois.nic.kerryhotels + + + KERRYLOGISTICS + whois.nic.kerrylogistics + + + KERRYPROPERTIES + whois.nic.kerryproperties + + + KFH + whois.nic.kfh + + + KG + whois.kg + + + KH + + + + + KI + whois.nic.ki + + + KIA + whois.nic.kia + + + KIM + whois.afilias.net + + + KINDER + + + + + KINDLE + + + + + KITCHEN + whois.nic.kitchen + + + KIWI + whois.nic.kiwi + + + KM + + + + + KN + whois.nic.kn + + + KOELN + whois.ryce-rsp.com + + + KOMATSU + whois.nic.komatsu + + + KOSHER + whois.nic.kosher + + + KP + + + + + KPMG + + + + + KPN + + + + + KR + whois.kr + + + KRD + whois.aridnrs.net.au + + + KRED + + + + + KUOKGROUP + whois.nic.kuokgroup + + + KW + + + + + KY + whois.kyregistry.ky + + + KYOTO + whois.nic.kyoto + + + KZ + whois.nic.kz + + + LA + whois.nic.la + + + LACAIXA + whois.nic.lacaixa + + + LADBROKES + whois.nic.ladbrokes + + + LAMBORGHINI + whois.afilias-srs.net + + + LAMER + whois.nic.lamer + + + LANCASTER + whois-lancaster.nic.fr + + + LANCIA + whois.afilias-srs.net + + + LANCOME + whois.nic.lancome + + + LAND + whois.nic.land + + + LANDROVER + whois.nic.landrover + + + LANXESS + + + + + LASALLE + whois.afilias-srs.net + + + LAT + whois.nic.lat + + + LATINO + whois.nic.latino + + + LATROBE + whois.nic.latrobe + + + LAW + whois.nic.law + + + LAWYER + whois.nic.lawyer + + + LB + + + + + LC + + + + + LDS + whois.nic.lds + + + LEASE + whois.nic.lease + + + LECLERC + whois-leclerc.nic.fr + + + LEFRAK + whois.nic.lefrak + + + LEGAL + whois.nic.legal + + + LEGO + whois.nic.lego + + + LEXUS + whois.nic.lexus + + + LGBT + whois.afilias.net + + + LI + whois.nic.li + + + LIAISON + whois.nic.liaison + + + LIDL + whois.nic.lidl + + + LIFE + whois.nic.life + + + LIFEINSURANCE + + + + + LIFESTYLE + whois.nic.lifestyle + + + LIGHTING + whois.nic.lighting + + + LIKE + + + + + LILLY + + + + + LIMITED + whois.nic.limited + + + LIMO + whois.nic.limo + + + LINCOLN + + + + + LINDE + whois.nic.linde + + + LINK + whois.uniregistry.net + + + LIPSY + whois.nic.lipsy + + + LIVE + whois.nic.live + + + LIVING + + + + + LIXIL + whois.nic.lixil + + + LK + + + + + LLC + whois.afilias.net + + + LOAN + whois.nic.loan + + + LOANS + whois.nic.loans + + + LOCKER + whois.nic.locker + + + LOCUS + whois.nic.locus + + + LOFT + + + + + LOL + whois.uniregistry.net + + + LONDON + whois.nic.london + + + LOTTE + whois.nic.lotte + + + LOTTO + whois.afilias.net + + + LOVE + whois.nic.love + + + LPL + whois.nic.lpl + + + LPLFINANCIAL + whois.nic.lplfinancial + + + LR + + + + + LS + 196.11.175.58 + + + LT + whois.domreg.lt + + + LTD + whois.nic.ltd + + + LTDA + whois.afilias-srs.net + + + LU + whois.dns.lu + + + LUNDBECK + whois.nic.lundbeck + + + LUPIN + + + + + LUXE + whois.nic.luxe + + + LUXURY + whois.nic.luxury + + + LV + whois.nic.lv + + + LY + whois.nic.ly + + + MA + whois.registre.ma + + + MACYS + whois.nic.macys + + + MADRID + whois.madrid.rs.corenic.net + + + MAIF + + + + + MAISON + whois.nic.maison + + + MAKEUP + whois.nic.makeup + + + MAN + whois.nic.man + + + MANAGEMENT + whois.nic.management + + + MANGO + whois.nic.mango + + + MAP + whois.nic.google + + + MARKET + whois.nic.market + + + MARKETING + whois.nic.marketing + + + MARKETS + whois.nic.markets + + + MARRIOTT + whois.afilias-srs.net + + + MARSHALLS + + + + + MASERATI + whois.nic.maserati + + + MATTEL + + + + + MBA + whois.nic.mba + + + MC + + + + + MCKINSEY + whois.nic.mckinsey + + + MD + whois.nic.md + + + ME + whois.nic.me + + + MED + whois.nic.med + + + MEDIA + whois.nic.media + + + MEET + whois.nic.google + + + MELBOURNE + whois.aridnrs.net.au + + + MEME + whois.nic.google + + + MEMORIAL + whois.nic.memorial + + + MEN + whois.nic.men + + + MENU + whois.nic.menu + + + MERCKMSD + + + + + METLIFE + whois.nic.metlife + + + MG + whois.nic.mg + + + MH + + + + + MIAMI + whois.nic.miami + + + MICROSOFT + + + + + MIL + + + + + MINI + whois.ksregistry.net + + + MINT + + + + + MIT + whois.afilias-srs.net + + + MITSUBISHI + whois.nic.gmo + + + MK + whois.marnet.mk + + + ML + whois.dot.ml + + + MLB + + + + + MLS + whois.nic.mls + + + MM + + + + + MMA + whois-mma.nic.fr + + + MN + whois.nic.mn + + + MO + whois.monic.mo + + + MOBI + whois.afilias.net + + + MOBILE + whois.nic.mobile + + + MOBILY + + + + + MODA + whois.nic.moda + + + MOE + whois.nic.moe + + + MOI + + + + + MOM + whois.uniregistry.net + + + MONASH + whois.nic.monash + + + MONEY + whois.nic.money + + + MONSTER + whois.nic.monster + + + MOPAR + whois.afilias-srs.net + + + MORMON + whois.nic.mormon + + + MORTGAGE + whois.nic.mortgage + + + MOSCOW + whois.nic.moscow + + + MOTO + + + + + MOTORCYCLES + whois.afilias-srs.net + + + MOV + whois.nic.google + + + MOVIE + whois.nic.movie + + + MOVISTAR + whois-fe.movistar.tango.knipp.de + + + MP + whois.nic.mp + + + MQ + whois.mediaserv.net + + + MR + whois.nic.mr + + + MS + whois.nic.ms + + + MSD + + + + + MT + + + + + MTN + whois.nic.mtn + + + MTR + whois.nic.mtr + + + MU + whois.nic.mu + + + MUSEUM + whois.nic.museum + + + MUTUAL + + + + + MV + + + + + MW + + + + + MX + whois.mx + + + MY + whois.mynic.my + + + MZ + whois.nic.mz + + + NA + whois.na-nic.com.na + + + NAB + whois.nic.nab + + + NADEX + whois.nic.nadex + + + NAGOYA + + + + + NAME + whois.nic.name + + + NATIONWIDE + whois.nic.nationwide + + + NATURA + whois.afilias-srs.net + + + NAVY + whois.nic.navy + + + NBA + + + + + NC + whois.nc + + + NE + + + + + NEC + whois.nic.nec + + + NET + whois.verisign-grs.com + + + NETBANK + whois.nic.netbank + + + NETFLIX + + + + + NETWORK + whois.nic.network + + + NEUSTAR + + + + + NEW + whois.nic.google + + + NEWHOLLAND + whois.nic.newholland + + + NEWS + whois.nic.news + + + NEXT + whois.nic.next + + + NEXTDIRECT + whois.nic.nextdirect + + + NEXUS + whois.nic.google + + + NF + whois.nic.nf + + + NFL + + + + + NG + whois.nic.net.ng + + + NGO + whois.publicinterestregistry.net + + + NHK + + + + + NI + + + + + NICO + whois.nic.nico + + + NIKE + + + + + NIKON + whois.nic.nikon + + + NINJA + whois.nic.ninja + + + NISSAN + whois.nic.gmo + + + NISSAY + whois.nic.nissay + + + NL + whois.domain-registry.nl + + + NO + whois.norid.no + + + NOKIA + whois.afilias-srs.net + + + NORTHWESTERNMUTUAL + + + + + NORTON + whois.nic.norton + + + NOW + + + + + NOWRUZ + whois.agitsys.net + + + NOWTV + whois.nic.nowtv + + + NP + + + + + NR + + + + + NRA + whois.afilias-srs.net + + + NRW + whois.nic.nrw + + + NTT + + + + + NU + whois.iis.nu + + + NYC + + + + + NZ + whois.srs.net.nz + + + OBI + whois.nic.obi + + + OBSERVER + whois.nic.observer + + + OFF + whois.nic.off + + + OFFICE + + + + + OKINAWA + + + + + OLAYAN + whois.nic.olayan + + + OLAYANGROUP + whois.nic.olayangroup + + + OLDNAVY + + + + + OLLO + whois.nic.ollo + + + OM + whois.registry.om + + + OMEGA + whois.nic.omega + + + ONE + whois.nic.one + + + ONG + whois.publicinterestregistry.net + + + ONL + whois.afilias-srs.net + + + ONLINE + whois.nic.online + + + ONYOURSIDE + whois.nic.onyourside + + + OOO + whois.nic.ooo + + + OPEN + + + + + ORACLE + whois.nic.oracle + + + ORANGE + whois.nic.orange + + + ORG + whois.pir.org + + + ORGANIC + whois.afilias.net + + + ORIGINS + whois.nic.origins + + + OSAKA + whois.nic.osaka + + + OTSUKA + + + + + OTT + whois.nic.ott + + + OVH + whois-ovh.nic.fr + + + PA + + + + + PAGE + whois.nic.google + + + PANASONIC + whois.nic.gmo + + + PARIS + whois-paris.nic.fr + + + PARS + whois.agitsys.net + + + PARTNERS + whois.nic.partners + + + PARTS + whois.nic.parts + + + PARTY + whois.nic.party + + + PASSAGENS + + + + + PAY + + + + + PCCW + whois.nic.pccw + + + PE + kero.yachay.pe + + + PET + whois.afilias.net + + + PF + whois.registry.pf + + + PFIZER + + + + + PG + + + + + PH + + + + + PHARMACY + + + + + PHD + whois.nic.google + + + PHILIPS + whois.nic.philips + + + PHONE + whois.nic.phone + + + PHOTO + whois.uniregistry.net + + + PHOTOGRAPHY + whois.nic.photography + + + PHOTOS + whois.nic.photos + + + PHYSIO + whois.nic.physio + + + PIAGET + + + + + PICS + whois.uniregistry.net + + + PICTET + + + + + PICTURES + whois.nic.pictures + + + PID + whois.nic.pid + + + PIN + + + + + PING + + + + + PINK + whois.afilias.net + + + PIONEER + whois.nic.gmo + + + PIZZA + whois.nic.pizza + + + PK + + + + + PL + whois.dns.pl + + + PLACE + whois.nic.place + + + PLAY + whois.nic.google + + + PLAYSTATION + whois.nic.playstation + + + PLUMBING + whois.nic.plumbing + + + PLUS + whois.nic.plus + + + PM + whois.nic.pm + + + PN + + + + + PNC + whois.nic.pnc + + + POHL + whois.ksregistry.net + + + POKER + whois.afilias.net + + + POLITIE + whois.nic.politie + + + PORN + whois.afilias-srs.net + + + POST + whois.dotpostregistry.net + + + PR + whois.afilias-srs.net + + + PRAMERICA + + + + + PRAXI + + + + + PRESS + whois.nic.press + + + PRIME + + + + + PRO + whois.afilias.net + + + PROD + whois.nic.google + + + PRODUCTIONS + whois.nic.productions + + + PROF + whois.nic.google + + + PROGRESSIVE + whois.afilias-srs.net + + + PROMO + whois.afilias.net + + + PROPERTIES + whois.nic.properties + + + PROPERTY + whois.uniregistry.net + + + PROTECTION + whois.nic.protection + + + PRU + + + + + PRUDENTIAL + + + + + PS + + + + + PT + whois.dns.pt + + + PUB + whois.nic.pub + + + PW + whois.nic.pw + + + PWC + whois.afilias-srs.net + + + PY + + + + + QA + whois.registry.qa + + + QPON + + + + + QUEBEC + whois.nic.quebec + + + QUEST + whois.nic.quest + + + QVC + + + + + RACING + whois.nic.racing + + + RADIO + whois.nic.radio + + + RAID + whois.nic.raid + + + RE + whois.nic.re + + + READ + + + + + REALESTATE + whois.nic.realestate + + + REALTOR + + + + + REALTY + whois.nic.realty + + + RECIPES + whois.nic.recipes + + + RED + whois.afilias.net + + + REDSTONE + whois.nic.redstone + + + REDUMBRELLA + whois.afilias-srs.net + + + REHAB + whois.nic.rehab + + + REISE + whois.nic.reise + + + REISEN + whois.nic.reisen + + + REIT + whois.nic.reit + + + RELIANCE + whois.nic.reliance + + + REN + + + + + RENT + whois.nic.rent + + + RENTALS + whois.nic.rentals + + + REPAIR + whois.nic.repair + + + REPORT + whois.nic.report + + + REPUBLICAN + whois.nic.republican + + + REST + whois.nic.rest + + + RESTAURANT + whois.nic.restaurant + + + REVIEW + whois.nic.review + + + REVIEWS + whois.nic.reviews + + + REXROTH + whois.nic.rexroth + + + RICH + whois.afilias-srs.net + + + RICHARDLI + whois.nic.richardli + + + RICOH + whois.nic.ricoh + + + RIGHTATHOME + whois.nic.rightathome + + + RIL + whois.nic.ril + + + RIO + whois.gtlds.nic.br + + + RIP + whois.nic.rip + + + RMIT + whois.aridnrs.net.au + + + RO + whois.rotld.ro + + + ROCHER + + + + + ROCKS + whois.nic.rocks + + + RODEO + whois.nic.rodeo + + + ROGERS + whois.afilias-srs.net + + + ROOM + + + + + RS + whois.rnids.rs + + + RSVP + whois.nic.google + + + RU + whois.tcinet.ru + + + RUGBY + whois.centralnic.com + + + RUHR + whois.nic.ruhr + + + RUN + whois.nic.run + + + RW + + + + + RWE + whois.nic.rwe + + + RYUKYU + + + + + SA + whois.nic.net.sa + + + SAARLAND + whois.ksregistry.net + + + SAFE + + + + + SAFETY + + + + + SAKURA + + + + + SALE + whois.nic.sale + + + SALON + whois.nic.salon + + + SAMSCLUB + whois.nic.samsclub + + + SAMSUNG + whois.nic.samsung + + + SANDVIK + whois.nic.sandvik + + + SANDVIKCOROMANT + whois.nic.sandvikcoromant + + + SANOFI + whois.nic.sanofi + + + SAP + whois.nic.sap + + + SARL + whois.nic.sarl + + + SAS + + + + + SAVE + + + + + SAXO + whois.aridnrs.net.au + + + SB + whois.nic.net.sb + + + SBI + whois.nic.sbi + + + SBS + whois.nic.sbs + + + SC + whois2.afilias-grs.net + + + SCA + whois.nic.sca + + + SCB + whois.nic.scb + + + SCHAEFFLER + whois.afilias-srs.net + + + SCHMIDT + whois.nic.schmidt + + + SCHOLARSHIPS + whois.nic.scholarships + + + SCHOOL + whois.nic.school + + + SCHULE + whois.nic.schule + + + SCHWARZ + whois.nic.schwarz + + + SCIENCE + whois.nic.science + + + SCJOHNSON + whois.nic.scjohnson + + + SCOR + whois.nic.scor + + + SCOT + whois.nic.scot + + + SD + + + + + SE + whois.iis.se + + + SEARCH + whois.nic.google + + + SEAT + whois.nic.seat + + + SECURE + + + + + SECURITY + whois.nic.security + + + SEEK + whois.nic.seek + + + SELECT + whois.nic.select + + + SENER + + + + + SERVICES + whois.nic.services + + + SES + whois.nic.ses + + + SEVEN + whois.nic.seven + + + SEW + whois.afilias-srs.net + + + SEX + whois.afilias-srs.net + + + SEXY + whois.uniregistry.net + + + SFR + whois.nic.sfr + + + SG + whois.sgnic.sg + + + SH + whois.nic.sh + + + SHANGRILA + whois.nic.shangrila + + + SHARP + whois.nic.gmo + + + SHAW + whois.afilias-srs.net + + + SHELL + whois.nic.shell + + + SHIA + whois.agitsys.net + + + SHIKSHA + whois.afilias.net + + + SHOES + whois.nic.shoes + + + SHOP + + + + + SHOPPING + whois.nic.shopping + + + SHOUJI + whois.teleinfo.cn + + + SHOW + whois.nic.show + + + SHOWTIME + whois.afilias-srs.net + + + SHRIRAM + whois.afilias-srs.net + + + SI + whois.register.si + + + SILK + + + + + SINA + whois.nic.sina + + + SINGLES + whois.nic.singles + + + SITE + whois.nic.site + + + SJ + + + + + SK + whois.sk-nic.sk + + + SKI + whois.afilias.net + + + SKIN + whois.nic.skin + + + SKY + whois.nic.sky + + + SKYPE + + + + + SL + + + + + SLING + whois.nic.sling + + + SM + whois.nic.sm + + + SMART + whois.nic.smart + + + SMILE + + + + + SN + whois.nic.sn + + + SNCF + whois-sncf.nic.fr + + + SO + whois.nic.so + + + SOCCER + whois.nic.soccer + + + SOCIAL + whois.nic.social + + + SOFTBANK + whois.nic.softbank + + + SOFTWARE + whois.nic.software + + + SOHU + + + + + SOLAR + whois.nic.solar + + + SOLUTIONS + whois.nic.solutions + + + SONG + + + + + SONY + whois.nic.sony + + + SOY + whois.nic.google + + + SPACE + whois.nic.space + + + SPIEGEL + whois.ksregistry.net + + + SPORT + whois.nic.sport + + + SPOT + + + + + SPREADBETTING + whois.nic.spreadbetting + + + SR + + + + + SRL + whois.afilias-srs.net + + + SRT + whois.afilias-srs.net + + + ST + whois.nic.st + + + STADA + whois.afilias-srs.net + + + STAPLES + + + + + STAR + whois.nic.star + + + STARHUB + whois.nic.starhub + + + STATEBANK + whois.nic.statebank + + + STATEFARM + + + + + STATOIL + whois.nic.statoil + + + STC + whois.nic.stc + + + STCGROUP + whois.nic.stcgroup + + + STOCKHOLM + whois.afilias-srs.net + + + STORAGE + whois.nic.storage + + + STORE + whois.nic.store + + + STREAM + + + + + STUDIO + whois.nic.studio + + + STUDY + whois.nic.study + + + STYLE + whois.nic.style + + + SU + whois.tcinet.ru + + + SUCKS + whois.nic.sucks + + + SUPPLIES + whois.nic.supplies + + + SUPPLY + whois.nic.supply + + + SUPPORT + whois.nic.support + + + SURF + whois.nic.surf + + + SURGERY + whois.nic.surgery + + + SUZUKI + + + + + SV + + + + + SWATCH + whois.nic.swatch + + + SWIFTCOVER + + + + + SWISS + whois.nic.swiss + + + SX + whois.sx + + + SY + whois.tld.sy + + + SYDNEY + whois.nic.sydney + + + SYMANTEC + whois.nic.symantec + + + SYSTEMS + whois.nic.systems + + + SZ + + + + + TAB + whois.nic.tab + + + TAIPEI + whois.nic.taipei + + + TALK + + + + + TAOBAO + + + + + TARGET + + + + + TATAMOTORS + whois.nic.tatamotors + + + TATAR + whois.nic.tatar + + + TATTOO + whois.uniregistry.net + + + TAX + whois.nic.tax + + + TAXI + whois.nic.taxi + + + TC + whois.nic.tc + + + TCI + whois.agitsys.net + + + TD + 41.74.44.44 + + + TDK + whois.nic.tdk + + + TEAM + whois.nic.team + + + TECH + whois.nic.tech + + + TECHNOLOGY + whois.nic.technology + + + TEL + whois.nic.tel + + + TELEFONICA + whois-fe.telefonica.tango.knipp.de + + + TEMASEK + whois.afilias-srs.net + + + TENNIS + whois.nic.tennis + + + TEVA + whois.nic.teva + + + TF + whois.nic.tf + + + TG + whois.nic.tg + + + TH + whois.thnic.co.th + + + THD + whois.nic.thd + + + THEATER + whois.nic.theater + + + THEATRE + whois.nic.theatre + + + TIAA + whois.nic.tiaa + + + TICKETS + whois.nic.tickets + + + TIENDA + whois.nic.tienda + + + TIFFANY + whois.nic.tiffany + + + TIPS + whois.nic.tips + + + TIRES + whois.nic.tires + + + TIROL + whois.nic.tirol + + + TJ + + + + + TJMAXX + + + + + TJX + + + + + TK + whois.dot.tk + + + TKMAXX + + + + + TL + whois.nic.tl + + + TM + whois.nic.tm + + + TMALL + + + + + TN + whois.ati.tn + + + TO + whois.tonic.to + + + TODAY + whois.nic.today + + + TOKYO + + + + + TOOLS + whois.nic.tools + + + TOP + whois.nic.top + + + TORAY + whois.nic.toray + + + TOSHIBA + whois.nic.toshiba + + + TOTAL + whois-total.nic.fr + + + TOURS + whois.nic.tours + + + TOWN + whois.nic.town + + + TOYOTA + whois.nic.toyota + + + TOYS + whois.nic.toys + + + TR + whois.nic.tr + + + TRADE + whois.nic.trade + + + TRADING + whois.nic.trading + + + TRAINING + whois.nic.training + + + TRAVEL + whois.nic.travel + + + TRAVELCHANNEL + whois.nic.travelchannel + + + TRAVELERS + whois.afilias-srs.net + + + TRAVELERSINSURANCE + whois.afilias-srs.net + + + TRUST + whois.nic.trust + + + TRV + whois.afilias-srs.net + + + TT + + + + + TUBE + + + + + TUI + whois.ksregistry.net + + + TUNES + + + + + TUSHU + + + + + TV + tvwhois.verisign-grs.com + + + TVS + whois.nic.tvs + + + TW + whois.twnic.net.tw + + + TZ + whois.tznic.or.tz + + + UA + whois.ua + + + UBANK + whois.nic.ubank + + + UBS + whois.nic.ubs + + + UCONNECT + whois.afilias-srs.net + + + UG + whois.co.ug + + + UK + whois.nic.uk + + + UNICOM + + + + + UNIVERSITY + whois.nic.university + + + UNO + + + + + UOL + whois.gtlds.nic.br + + + UPS + whois.nic.ups + + + US + whois.nic.us + + + UY + whois.nic.org.uy + + + UZ + whois.cctld.uz + + + VA + + + + + VACATIONS + whois.nic.vacations + + + VANA + whois.nic.vana + + + VANGUARD + whois.nic.vanguard + + + VC + whois2.afilias-grs.net + + + VE + whois.nic.ve + + + VEGAS + whois.afilias-srs.net + + + VENTURES + whois.nic.ventures + + + VERISIGN + whois.nic.verisign + + + VERSICHERUNG + whois.nic.versicherung + + + VET + whois.nic.vet + + + VG + whois.nic.vg + + + VI + + + + + VIAJES + whois.nic.viajes + + + VIDEO + whois.nic.video + + + VIG + whois.afilias-srs.net + + + VIKING + whois.afilias-srs.net + + + VILLAS + whois.nic.villas + + + VIN + whois.nic.vin + + + VIP + whois.nic.vip + + + VIRGIN + whois.nic.virgin + + + VISA + whois.nic.visa + + + VISION + whois.nic.vision + + + VISTAPRINT + whois.nic.vistaprint + + + VIVA + whois.nic.viva + + + VIVO + + + + + VLAANDEREN + whois.nic.vlaanderen + + + VN + + + + + VODKA + whois.nic.vodka + + + VOLKSWAGEN + whois.afilias-srs.net + + + VOLVO + whois.nic.volvo + + + VOTE + whois.afilias.net + + + VOTING + whois.voting.tld-box.at + + + VOTO + whois.afilias.net + + + VOYAGE + whois.nic.voyage + + + VU + vunic.vu + + + VUELOS + + + + + WALES + whois.nic.wales + + + WALMART + whois.nic.walmart + + + WALTER + whois.nic.walter + + + WANG + whois.gtld.knet.cn + + + WANGGOU + + + + + WARMAN + whois.nic.warman + + + WATCH + whois.nic.watch + + + WATCHES + + + + + WEATHER + + + + + WEATHERCHANNEL + + + + + WEBCAM + whois.nic.webcam + + + WEBER + whois.nic.weber + + + WEBSITE + whois.nic.website + + + WED + whois.nic.wed + + + WEDDING + whois.nic.wedding + + + WEIBO + whois.nic.weibo + + + WEIR + + + + + WF + whois.nic.wf + + + WHOSWHO + whois.nic.whoswho + + + WIEN + whois.nic.wien + + + WIKI + whois.nic.wiki + + + WILLIAMHILL + + + + + WIN + whois.nic.win + + + WINDOWS + + + + + WINE + whois.nic.wine + + + WINNERS + + + + + WME + whois.nic.wme + + + WOLTERSKLUWER + whois.nic.wolterskluwer + + + WOODSIDE + whois.nic.woodside + + + WORK + whois.nic.work + + + WORKS + whois.nic.works + + + WORLD + whois.nic.world + + + WOW + + + + + WS + whois.website.ws + + + WTC + whois.nic.wtc + + + WTF + whois.nic.wtf + + + XBOX + + + + + XEROX + whois.nic.xerox + + + XFINITY + whois.nic.xfinity + + + XIHUAN + whois.teleinfo.cn + + + XIN + whois.nic.xin + + + XN--11B4C3D + whois.nic.xn--11b4c3d + + + XN--1CK2E1B + + + + + XN--1QQW23A + whois.ngtld.cn + + + XN--2SCRJ9C + + + + + XN--30RR7Y + whois.gtld.knet.cn + + + XN--3BST00M + whois.gtld.knet.cn + + + XN--3DS443G + whois.teleinfo.cn + + + XN--3E0B707E + whois.kr + + + XN--3HCRJ9C + + + + + XN--3OQ18VL8PN36A + whois.nic.xn--3oq18vl8pn36a + + + XN--3PXU8K + whois.nic.xn--3pxu8k + + + XN--42C2D9A + whois.nic.xn--42c2d9a + + + XN--45BR5CYL + + + + + XN--45BRJ9C + + + + + XN--45Q11C + whois.nic.xn--45q11c + + + XN--4GBRIM + whois.afilias-srs.net + + + XN--54B7FTA0CC + + + + + XN--55QW42G + whois.conac.cn + + + XN--55QX5D + whois.ngtld.cn + + + XN--5SU34J936BGSG + whois.nic.xn--5su34j936bgsg + + + XN--5TZM5G + whois.nic.xn--5tzm5g + + + XN--6FRZ82G + whois.afilias.net + + + XN--6QQ986B3XL + whois.gtld.knet.cn + + + XN--80ADXHKS + whois.nic.xn--80adxhks + + + XN--80AO21A + whois.nic.kz + + + XN--80AQECDR1A + whois.aridnrs.net.au + + + XN--80ASEHDB + whois.online.rs.corenic.net + + + XN--80ASWG + whois.site.rs.corenic.net + + + XN--8Y0A063A + + + + + XN--90A3AC + whois.rnids.rs + + + XN--90AE + whois.imena.bg + + + XN--90AIS + whois.cctld.by + + + XN--9DBQ2A + whois.nic.xn--9dbq2a + + + XN--9ET52U + whois.gtld.knet.cn + + + XN--9KRT00A + whois.nic.xn--9krt00a + + + XN--B4W605FERD + whois.afilias-srs.net + + + XN--BCK1B9A5DRE4C + + + + + XN--C1AVG + whois.publicinterestregistry.net + + + XN--C2BR7G + whois.nic.xn--c2br7g + + + XN--CCK2B3B + + + + + XN--CG4BKI + whois.kr + + + XN--CLCHC0EA0B2G2A9GCD + whois.sgnic.sg + + + XN--CZR694B + + + + + XN--CZRS0T + whois.nic.xn--czrs0t + + + XN--CZRU2D + whois.gtld.knet.cn + + + XN--D1ACJ3B + whois.nic.xn--d1acj3b + + + XN--D1ALF + whois.marnet.mk + + + XN--E1A4C + whois.eu + + + XN--ECKVDTC9D + + + + + XN--EFVY88H + whois.nic.xn--efvy88h + + + XN--ESTV75G + whois.nic.xn--estv75g + + + XN--FCT429K + + + + + XN--FHBEI + whois.nic.xn--fhbei + + + XN--FIQ228C5HS + whois.teleinfo.cn + + + XN--FIQ64B + whois.gtld.knet.cn + + + XN--FIQS8S + cwhois.cnnic.cn + + + XN--FIQZ9S + cwhois.cnnic.cn + + + XN--FJQ720A + whois.nic.xn--fjq720a + + + XN--FLW351E + whois.nic.google + + + XN--FPCRJ9C3D + + + + + XN--FZC2C9E2C + + + + + XN--FZYS8D69UVGM + whois.nic.xn--fzys8d69uvgm + + + XN--G2XX48C + + + + + XN--GCKR3F0F + + + + + XN--GECRJ9C + + + + + XN--GK3AT1E + + + + + XN--H2BREG3EVE + + + + + XN--H2BRJ9C + + + + + XN--H2BRJ9C8C + + + + + XN--HXT814E + whois.nic.xn--hxt814e + + + XN--I1B6B1A6A2E + whois.publicinterestregistry.net + + + XN--IMR513N + + + + + XN--IO0A7I + whois.ngtld.cn + + + XN--J1AEF + whois.nic.xn--j1aef + + + XN--J1AMH + whois.dotukr.com + + + XN--J6W193G + whois.hkirc.hk + + + XN--JLQ61U9W7B + whois.nic.xn--jlq61u9w7b + + + XN--JVR189M + + + + + XN--KCRX77D1X4A + whois.nic.xn--kcrx77d1x4a + + + XN--KPRW13D + whois.twnic.net.tw + + + XN--KPRY57D + whois.twnic.net.tw + + + XN--KPU716F + + + + + XN--KPUT3I + whois.nic.xn--kput3i + + + XN--L1ACC + + + + + XN--LGBBAT1AD8J + whois.nic.dz + + + XN--MGB9AWBF + whois.registry.om + + + XN--MGBA3A3EJT + + + + + XN--MGBA3A4F16A + whois.nic.ir + + + XN--MGBA7C0BBN0A + whois.nic.xn--mgba7c0bbn0a + + + XN--MGBAAKC7DVF + whois.centralnic.com + + + XN--MGBAAM7A8H + whois.aeda.net.ae + + + XN--MGBAB2BD + whois.bazaar.coreregistry.net + + + XN--MGBAI9AZGQP6J + + + + + XN--MGBAYH7GPA + + + + + XN--MGBB9FBPOB + + + + + XN--MGBBH1A + + + + + XN--MGBBH1A71E + + + + + XN--MGBC0A9AZCG + + + + + XN--MGBCA7DZDO + whois.nic.xn--mgbca7dzdo + + + XN--MGBERP4A5D4AR + whois.nic.net.sa + + + XN--MGBGU82A + + + + + XN--MGBI4ECEXP + whois.aridnrs.net.au + + + XN--MGBPL2FH + + + + + XN--MGBT3DHD + whois.agitsys.net + + + XN--MGBTX2B + whois.cmc.iq + + + XN--MGBX4CD0AB + whois.mynic.my + + + XN--MIX891F + whois.monic.mo + + + XN--MK1BU44C + whois.nic.xn--mk1bu44c + + + XN--MXTQ1M + whois.nic.xn--mxtq1m + + + XN--NGBC5AZD + whois.nic.xn--ngbc5azd + + + XN--NGBE9E0A + whois.nic.xn--ngbe9e0a + + + XN--NGBRX + whois.nic.xn--ngbrx + + + XN--NODE + whois.itdc.ge + + + XN--NQV7F + whois.publicinterestregistry.net + + + XN--NQV7FS00EMA + whois.nic.xn--nqv7fs00ema + + + XN--NYQY26A + + + + + XN--O3CW4H + whois.thnic.co.th + + + XN--OGBPF8FL + whois.tld.sy + + + XN--OTU796D + + + + + XN--P1ACF + whois.nic.xn--p1acf + + + XN--P1AI + whois.tcinet.ru + + + XN--PBT977C + + + + + XN--PGBS0DH + + + + + XN--PSSY2U + whois.nic.xn--pssy2u + + + XN--Q9JYB4C + whois.nic.google + + + XN--QCKA1PMC + whois.nic.google + + + XN--QXAM + + + + + XN--RHQV96G + + + + + XN--ROVU88B + + + + + XN--RVC1E0AM3E + + + + + XN--S9BRJ9C + + + + + XN--SES554G + whois.registry.knet.cn + + + XN--T60B56A + whois.nic.xn--t60b56a + + + XN--TCKWE + whois.nic.xn--tckwe + + + XN--TIQ49XQYJ + whois.aridnrs.net.au + + + XN--UNUP4Y + whois.nic.xn--unup4y + + + XN--VERMGENSBERATER-CTB + whois.ksregistry.net + + + XN--VERMGENSBERATUNG-PWB + whois.ksregistry.net + + + XN--VHQUV + whois.nic.xn--vhquv + + + XN--VUQ861B + whois.teleinfo.cn + + + XN--W4R85EL8FHU5DNRA + whois.nic.xn--w4r85el8fhu5dnra + + + XN--W4RS40L + whois.nic.xn--w4rs40l + + + XN--WGBH1C + + + + + XN--WGBL6A + whois.registry.qa + + + XN--XHQ521B + whois.ngtld.cn + + + XN--XKC2AL3HYE2A + + + + + XN--XKC2DL3A5EE0H + + + + + XN--Y9A3AQ + whois.amnic.net + + + XN--YFRO4I67O + whois.sgnic.sg + + + XN--YGBI2AMMX + whois.pnina.ps + + + XN--ZFR164B + whois.conac.cn + + + XXX + whois.nic.xxx + + + XYZ + whois.nic.xyz + + + YACHTS + whois.afilias-srs.net + + + YAHOO + + + + + YAMAXUN + + + + + YANDEX + + + + + YE + + + + + YODOBASHI + whois.nic.gmo + + + YOGA + whois.nic.yoga + + + YOKOHAMA + + + + + YOU + + + + + YOUTUBE + whois.nic.google + + + YT + whois.nic.yt + + + YUN + whois.teleinfo.cn + + + ZA + + + + + ZAPPOS + + + + + ZARA + whois.afilias-srs.net + + + ZERO + + + + + ZIP + whois.nic.google + + + ZIPPO + + + + + ZM + whois.nic.zm + + + ZONE + whois.nic.zone + + + ZUERICH + whois.ksregistry.net + + + ZW + + + + + + + + + + \ No newline at end of file diff --git a/Source/NETworkManager/Utilities/RegexHelper.cs b/Source/NETworkManager/Utilities/RegexHelper.cs index e0d80ad86c..8779001349 100644 --- a/Source/NETworkManager/Utilities/RegexHelper.cs +++ b/Source/NETworkManager/Utilities/RegexHelper.cs @@ -60,5 +60,8 @@ public static class RegexHelper // Match a hostname with subnetmask like server-01.example.com/255.255.255.0 public const string HostnameSubnetmaskRegex = @"^" + HostnameValues + @"\/" + SubnetmaskValues + @"$"; + + // Match a domain local.example.com + public const string DomainRegex = @"^(?!:\/\/)([a-zA-Z0-9-_]+\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+\.[a-zA-Z]{2,11}?$"; } } diff --git a/Source/NETworkManager/Validators/DomainValidator.cs b/Source/NETworkManager/Validators/DomainValidator.cs new file mode 100644 index 0000000000..4cd9ec205d --- /dev/null +++ b/Source/NETworkManager/Validators/DomainValidator.cs @@ -0,0 +1,16 @@ +using System.Globalization; +using System.Text.RegularExpressions; +using System.Windows.Controls; +using NETworkManager.Resources.Localization; +using NETworkManager.Utilities; + +namespace NETworkManager.Validators +{ + public class DomainValidator : ValidationRule + { + public override ValidationResult Validate(object value, CultureInfo cultureInfo) + { + return Regex.IsMatch((string) value, RegexHelper.DomainRegex) ? ValidationResult.ValidResult : new ValidationResult(false,Strings.EnterValidDomain); + } + } +} diff --git a/Source/NETworkManager/ViewModels/WhoisHostViewModel.cs b/Source/NETworkManager/ViewModels/WhoisHostViewModel.cs new file mode 100644 index 0000000000..cd642574cd --- /dev/null +++ b/Source/NETworkManager/ViewModels/WhoisHostViewModel.cs @@ -0,0 +1,75 @@ +using System.Collections.ObjectModel; +using NETworkManager.Controls; +using Dragablz; +using System.Windows.Input; +using NETworkManager.Views; +using NETworkManager.Utilities; + +namespace NETworkManager.ViewModels +{ + public class WhoisHostViewModel : ViewModelBase + { + #region Variables + public IInterTabClient InterTabClient { get; } + public ObservableCollection TabItems { get; } + + private int _tabId; + + private int _selectedTabIndex; + public int SelectedTabIndex + { + get => _selectedTabIndex; + set + { + if (value == _selectedTabIndex) + return; + + _selectedTabIndex = value; + OnPropertyChanged(); + } + } + #endregion + + #region Constructor + public WhoisHostViewModel() + { + InterTabClient = new DragablzInterTabClient(ApplicationViewManager.Name.Whois); + + TabItems = new ObservableCollection + { + new DragablzTabItem(Resources.Localization.Strings.NewTab, new WhoisView (_tabId), _tabId) + }; + } + #endregion + + #region ICommand & Actions + public ICommand AddTabCommand + { + get { return new RelayCommand(p => AddTabAction()); } + } + + private void AddTabAction() + { + AddTab(); + } + + public ItemActionCallback CloseItemCommand => CloseItemAction; + + private static void CloseItemAction(ItemActionCallbackArgs args) + { + ((args.DragablzItem.Content as DragablzTabItem)?.View as WhoisView)?.CloseTab(); + } + #endregion + + #region Methods + private void AddTab() + { + _tabId++; + + TabItems.Add(new DragablzTabItem(Resources.Localization.Strings.NewTab, new WhoisView(_tabId), _tabId)); + + SelectedTabIndex = TabItems.Count - 1; + } + #endregion + } +} \ No newline at end of file diff --git a/Source/NETworkManager/ViewModels/WhoisViewModel.cs b/Source/NETworkManager/ViewModels/WhoisViewModel.cs new file mode 100644 index 0000000000..5d95acf4f5 --- /dev/null +++ b/Source/NETworkManager/ViewModels/WhoisViewModel.cs @@ -0,0 +1,306 @@ +using NETworkManager.Models.Network; +using System; +using System.Windows.Input; +using NETworkManager.Models.Settings; +using System.Windows.Threading; +using System.Diagnostics; +using System.ComponentModel; +using System.Windows.Data; +using System.Linq; +using NETworkManager.Utilities; +using System.Windows; +using NETworkManager.Controls; +using Dragablz; +using NETworkManager.Resources.Localization; + +namespace NETworkManager.ViewModels +{ + public class WhoisViewModel : ViewModelBase + { + #region Variables + private readonly int _tabId; + + private readonly DispatcherTimer _dispatcherTimer = new DispatcherTimer(); + private readonly Stopwatch _stopwatch = new Stopwatch(); + + private readonly bool _isLoading; + + private string _domain; + public string Domain + { + get => _domain; + set + { + if (value == _domain) + return; + + _domain = value; + OnPropertyChanged(); + } + } + + public ICollectionView WebsiteUriHistoryView { get; } + + private bool _isWhoisRunning; + public bool IsWhoisRunning + { + get => _isWhoisRunning; + set + { + if (value == _isWhoisRunning) + return; + + _isWhoisRunning = value; + OnPropertyChanged(); + } + } + + private string _whoisResult; + public string WhoisResult + { + get => _whoisResult; + set + { + if (value == _whoisResult) + return; + + _whoisResult = value; + OnPropertyChanged(); + } + } + + private bool _displayStatusMessage; + public bool DisplayStatusMessage + { + get => _displayStatusMessage; + set + { + if (value == _displayStatusMessage) + return; + + _displayStatusMessage = value; + OnPropertyChanged(); + } + } + + private string _statusMessage; + public string StatusMessage + { + get => _statusMessage; + set + { + if (value == _statusMessage) + return; + + _statusMessage = value; + OnPropertyChanged(); + } + } + + private DateTime? _startTime; + public DateTime? StartTime + { + get => _startTime; + set + { + if (value == _startTime) + return; + + _startTime = value; + OnPropertyChanged(); + } + } + + private TimeSpan _duration; + public TimeSpan Duration + { + get => _duration; + set + { + if (value == _duration) + return; + + _duration = value; + OnPropertyChanged(); + } + } + + private DateTime? _endTime; + public DateTime? EndTime + { + get => _endTime; + set + { + if (value == _endTime) + return; + + _endTime = value; + OnPropertyChanged(); + } + } + + private int _headersCount; + public int HeadersCount + { + get => _headersCount; + set + { + if (value == _headersCount) + return; + + _headersCount = value; + OnPropertyChanged(); + } + } + + private bool _expandStatistics; + public bool ExpandStatistics + { + get => _expandStatistics; + set + { + if (value == _expandStatistics) + return; + + if (!_isLoading) + SettingsManager.Current.Whois_ExpandStatistics = value; + + _expandStatistics = value; + OnPropertyChanged(); + } + } + + public bool ShowStatistics => SettingsManager.Current.Whois_ShowStatistics; + + #endregion + + #region Contructor, load settings + public WhoisViewModel(int tabId) + { + _isLoading = true; + _tabId = tabId; + + // Set collection view + WebsiteUriHistoryView = CollectionViewSource.GetDefaultView(SettingsManager.Current.Whois_DomainHistory); + + LoadSettings(); + + // Detect if settings have changed... + SettingsManager.Current.PropertyChanged += SettingsManager_PropertyChanged; + + _isLoading = false; + } + + private void LoadSettings() + { + ExpandStatistics = SettingsManager.Current.Whois_ExpandStatistics; + } + #endregion + + #region ICommands & Actions + public ICommand QueryCommand + { + get { return new RelayCommand(p => QueryAction()); } + } + + private void QueryAction() + { + Check(); + } + #endregion + + #region Methods + private async void Check() + { + DisplayStatusMessage = false; + IsWhoisRunning = true; + + // Measure time + StartTime = DateTime.Now; + _stopwatch.Start(); + _dispatcherTimer.Tick += DispatcherTimer_Tick; + _dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 100); + _dispatcherTimer.Start(); + EndTime = null; + + WhoisResult = null; + HeadersCount = 0; + + // Change the tab title (not nice, but it works) + var window = Application.Current.Windows.OfType().FirstOrDefault(x => x.IsActive); + + if (window != null) + { + foreach (var tabablzControl in VisualTreeHelper.FindVisualChildren(window)) + { + tabablzControl.Items.OfType().First(x => x.Id == _tabId).Header = Domain; + } + } + + try + { + var whoisServer = Whois.GetWhoisServer(Domain); + + if (string.IsNullOrEmpty(whoisServer)) + { + StatusMessage = string.Format(Strings.WhoisServerNotFoundForTheDomain, Domain); + DisplayStatusMessage = true; + } + else + { + WhoisResult = await Whois.QueryAsync(Domain, whoisServer); + + AddDomainToHistory(Domain); + } + } + catch (Exception ex) + { + StatusMessage = ex.Message; + DisplayStatusMessage = true; + } + + // Stop timer and stopwatch + _stopwatch.Stop(); + _dispatcherTimer.Stop(); + + Duration = _stopwatch.Elapsed; + EndTime = DateTime.Now; + + _stopwatch.Reset(); + + IsWhoisRunning = false; + } + + public void OnClose() + { + + } + + private void AddDomainToHistory(string websiteUri) + { + // Create the new list + var list = ListHelper.Modify(SettingsManager.Current.Whois_DomainHistory.ToList(), websiteUri, SettingsManager.Current.General_HistoryListEntries); + + // Clear the old items + SettingsManager.Current.Whois_DomainHistory.Clear(); + OnPropertyChanged(nameof(Domain)); // Raise property changed again, after the collection has been cleared + + // Fill with the new items + list.ForEach(x => SettingsManager.Current.Whois_DomainHistory.Add(x)); + } + #endregion + + #region Events + private void DispatcherTimer_Tick(object sender, EventArgs e) + { + Duration = _stopwatch.Elapsed; + } + + private void SettingsManager_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == nameof(SettingsInfo.Whois_ShowStatistics)) + OnPropertyChanged(nameof(ShowStatistics)); + } + #endregion + } +} \ No newline at end of file diff --git a/Source/NETworkManager/Views/WhoisHostView.xaml b/Source/NETworkManager/Views/WhoisHostView.xaml new file mode 100644 index 0000000000..a130765315 --- /dev/null +++ b/Source/NETworkManager/Views/WhoisHostView.xaml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/WhoisHostView.xaml.cs b/Source/NETworkManager/Views/WhoisHostView.xaml.cs new file mode 100644 index 0000000000..37cca5177b --- /dev/null +++ b/Source/NETworkManager/Views/WhoisHostView.xaml.cs @@ -0,0 +1,17 @@ +using NETworkManager.ViewModels; + +namespace NETworkManager.Views +{ + public partial class WhoisHostView + { + private readonly WhoisHostViewModel _viewModel = new WhoisHostViewModel(); + + public WhoisHostView() + { + InitializeComponent(); + DataContext = _viewModel; + + InterTabController.Partition = ApplicationViewManager.Name.HTTPHeaders.ToString(); + } + } +} diff --git a/Source/NETworkManager/Views/WhoisView.xaml b/Source/NETworkManager/Views/WhoisView.xaml new file mode 100644 index 0000000000..5bd35cfdc5 --- /dev/null +++ b/Source/NETworkManager/Views/WhoisView.xaml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/WhoisView.xaml.cs b/Source/NETworkManager/Views/WhoisView.xaml.cs new file mode 100644 index 0000000000..81f38c9d01 --- /dev/null +++ b/Source/NETworkManager/Views/WhoisView.xaml.cs @@ -0,0 +1,23 @@ +using NETworkManager.ViewModels; + +namespace NETworkManager.Views +{ + public partial class WhoisView + { + private readonly WhoisViewModel _viewModel; + + public WhoisView(int tabId) + { + InitializeComponent(); + + _viewModel = new WhoisViewModel(tabId); + + DataContext = _viewModel; + } + + public void CloseTab() + { + _viewModel.OnClose(); + } + } +}