Browse Source

Refine user-friendly server name

Forgot to consider domain name.

Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
tags/3.2
Syrone Wong 8 years ago
parent
commit
50de65624c
1 changed files with 16 additions and 21 deletions
  1. +16
    -21
      shadowsocks-csharp/Model/Server.cs

+ 16
- 21
shadowsocks-csharp/Model/Server.cs 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()


Loading…
Cancel
Save