Refine user-friendly server name

Forgot to consider domain name.

Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
This commit is contained in:
Syrone Wong
2016-08-10 13:49:17 +08:00
parent 9607751bf8
commit 50de65624c
+16 -21
View File
@@ -1,6 +1,4 @@
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Text.RegularExpressions;
@@ -41,27 +39,24 @@ namespace Shadowsocks.Model
{
return I18N.GetString("New server");
}
IPAddress addr;
if ( !IPAddress.TryParse( server, out addr ) ) {
Logging.Error( "Invalid server IP Address" );
string serverStr;
// CheckHostName() won't do a real DNS lookup
var hostType = Uri.CheckHostName( server );
if ( hostType == UriHostNameType.Unknown ) {
throw new FormatException("Invalid Server Address.");
}
if ( remarks.IsNullOrEmpty() ) {
switch ( addr.AddressFamily ) {
case AddressFamily.InterNetwork:
return $"{server}:{server_port}";
case AddressFamily.InterNetworkV6:
return $"[{server}]:{server_port}";
}
} else {
switch ( addr.AddressFamily ) {
case AddressFamily.InterNetwork:
return $"{remarks} ({server}:{server_port})";
case AddressFamily.InterNetworkV6:
return $"{remarks} ([{server}]:{server_port})";
}
switch ( hostType ) {
case UriHostNameType.IPv6:
serverStr = $"[{server}]:{server_port}";
break;
default:
// IPv4 and domain name
serverStr = $"{server}:{server_port}";
break;
}
// If reached here, boom.
return null;
return remarks.IsNullOrEmpty()
? serverStr
: $"{remarks} ({serverStr})";
}
public Server()