diff --git a/SuiDao.Client/Models/LogInByKeyMassage.cs b/SuiDao.Client/Models/LogInByKeyMassage.cs index 179799d..35427b7 100644 --- a/SuiDao.Client/Models/LogInByKeyMassage.cs +++ b/SuiDao.Client/Models/LogInByKeyMassage.cs @@ -8,5 +8,7 @@ namespace SuiDao.Client.Models public class LogInByKeyMassage : TunnelMassage { public string key { get; set; } + + public long server_id { get; set; } } } diff --git a/SuiDao.Client/Models/ServerConfig.cs b/SuiDao.Client/Models/ServerConfig.cs index b2f5ce4..a1b7b8f 100644 --- a/SuiDao.Client/Models/ServerConfig.cs +++ b/SuiDao.Client/Models/ServerConfig.cs @@ -5,9 +5,18 @@ using System.Text; namespace SuiDao.Client.Models { public class SuiDaoServerConfig + { + public SuiDaoServerInfo[] servers { get; set; } + } + + public class SuiDaoServerInfo { public string ip { get; set; } public int bind_port { get; set; } + + public string server_name { get; set; } + + public long server_id { get; set; } } -} +} \ No newline at end of file diff --git a/SuiDao.Client/Program.cs b/SuiDao.Client/Program.cs index 382fceb..d8d0026 100644 --- a/SuiDao.Client/Program.cs +++ b/SuiDao.Client/Program.cs @@ -161,8 +161,8 @@ namespace SuiDao.Client private static void Run(IServiceProvider servicesProvider, ILogger _logger, string key, bool log) { - var res = HttpHelper.PostAsJson("https://api1.suidao.io/api/Client/GetServerByKey", $"{{ \"key\":\"{key}\"}}").Result; - var jobj = JObject.Parse(res); + var res_str = HttpHelper.PostAsJson("https://api1.suidao.io/api/Client/GetServerByKey", $"{{ \"key\":\"{key}\"}}").Result; + var jobj = JObject.Parse(res_str); if ((bool)jobj["success"] == true) { // 记录登录记录 @@ -171,7 +171,47 @@ namespace SuiDao.Client AppendTextToFile(Path.Combine(AppContext.BaseDirectory, KeyLogName), Environment.NewLine + key); } - var server = jobj["data"].ToObject(); + SuiDaoServerInfo server; + var res = jobj["data"].ToObject(); + if (res.servers != null && res.servers.Count() > 0) + { + // 选择其中一个服务器继续 + if (res.servers.Count() == 1) + { + server = res.servers.First(); + } + else + { + Console.WriteLine("请选择其中一个服务器进行连接(输入序号,回车键确认):"); + for (int i = 0; i < res.servers.Length; i++) + { + Console.WriteLine($"{i}:{res.servers[i].server_name}"); + } + + while (true) + { + var input = Console.ReadLine(); + int index; + if (int.TryParse(input, out index) && index <= res.servers.Length - 1 && index >= 0) + { + // 输入有效,退出循环 + server = res.servers[index]; + Console.WriteLine($"您选择的服务器为:{server.server_name}"); + break; + } + else + { + Console.WriteLine("输入有误,请重新输入"); + } + } + } + } + else + { + Console.WriteLine("您无可用的服务器"); + NewKey(_logger); + return; + } var client = servicesProvider.GetRequiredService(); @@ -193,7 +233,7 @@ namespace SuiDao.Client } // 登录 - _client.Send(new Message { MessageType = MessageType.C_LogIn, Content = new LogInByKeyMassage { key = key } }); + _client.Send(new Message { MessageType = MessageType.C_LogIn, Content = new LogInByKeyMassage { key = key, server_id = server.server_id } }); return _client; }, new SuiDaoServer { ServerAddr = server.ip, ServerPort = server.bind_port }); diff --git a/SuiDao.Server/Handlers/SuiDaoConfigHandler.cs b/SuiDao.Server/Handlers/SuiDaoConfigHandler.cs index 9a90028..3571502 100644 --- a/SuiDao.Server/Handlers/SuiDaoConfigHandler.cs +++ b/SuiDao.Server/Handlers/SuiDaoConfigHandler.cs @@ -15,8 +15,10 @@ namespace SuiDao.Server { public LogInMassage GetConfig(JObject content) { - var key = content.ToObject().key; - var res = HttpHelper.PostAsJson("https://api1.suidao.io/api/Client/GetTunnelByKey", $"{{ \"key\":\"{key}\"}}").Result; + + var logMsg = content.ToObject(); + var res = HttpHelper.PostAsJson("https://api1.suidao.io/api/Client/GetTunnelByKey", $"{{ \"key\":\"{logMsg.key}\",\"server_id\":{logMsg.server_id}}}").Result; + var jobj = JObject.Parse(res); if ((bool)jobj["success"] == true) { diff --git a/SuiDao.Server/SuiDao.Server.csproj.user b/SuiDao.Server/SuiDao.Server.csproj.user index b8c3132..9179783 100644 --- a/SuiDao.Server/SuiDao.Server.csproj.user +++ b/SuiDao.Server/SuiDao.Server.csproj.user @@ -1,6 +1,7 @@  - <_LastSelectedProfileId>G:\GitHub\FastTunnel\SuiDao.Server\Properties\PublishProfiles\FolderProfile.pubxml + <_LastSelectedProfileId>D:\GitHub\FastTunnel\SuiDao.Server\Properties\PublishProfiles\FolderProfile.pubxml + false \ No newline at end of file