mirror of
https://github.com/FastTunnel/FastTunnel.git
synced 2025-02-08 02:39:29 +08:00
support multi server
This commit is contained in:
parent
c9f3768797
commit
3c96e40127
|
@ -8,5 +8,7 @@ namespace SuiDao.Client.Models
|
||||||
public class LogInByKeyMassage : TunnelMassage
|
public class LogInByKeyMassage : TunnelMassage
|
||||||
{
|
{
|
||||||
public string key { get; set; }
|
public string key { get; set; }
|
||||||
|
|
||||||
|
public long server_id { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,18 @@ using System.Text;
|
||||||
namespace SuiDao.Client.Models
|
namespace SuiDao.Client.Models
|
||||||
{
|
{
|
||||||
public class SuiDaoServerConfig
|
public class SuiDaoServerConfig
|
||||||
|
{
|
||||||
|
public SuiDaoServerInfo[] servers { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SuiDaoServerInfo
|
||||||
{
|
{
|
||||||
public string ip { get; set; }
|
public string ip { get; set; }
|
||||||
|
|
||||||
public int bind_port { get; set; }
|
public int bind_port { get; set; }
|
||||||
|
|
||||||
|
public string server_name { get; set; }
|
||||||
|
|
||||||
|
public long server_id { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -161,8 +161,8 @@ namespace SuiDao.Client
|
||||||
|
|
||||||
private static void Run(IServiceProvider servicesProvider, ILogger _logger, string key, bool log)
|
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 res_str = HttpHelper.PostAsJson("https://api1.suidao.io/api/Client/GetServerByKey", $"{{ \"key\":\"{key}\"}}").Result;
|
||||||
var jobj = JObject.Parse(res);
|
var jobj = JObject.Parse(res_str);
|
||||||
if ((bool)jobj["success"] == true)
|
if ((bool)jobj["success"] == true)
|
||||||
{
|
{
|
||||||
// 记录登录记录
|
// 记录登录记录
|
||||||
|
@ -171,7 +171,47 @@ namespace SuiDao.Client
|
||||||
AppendTextToFile(Path.Combine(AppContext.BaseDirectory, KeyLogName), Environment.NewLine + key);
|
AppendTextToFile(Path.Combine(AppContext.BaseDirectory, KeyLogName), Environment.NewLine + key);
|
||||||
}
|
}
|
||||||
|
|
||||||
var server = jobj["data"].ToObject<SuiDaoServerConfig>();
|
SuiDaoServerInfo server;
|
||||||
|
var res = jobj["data"].ToObject<SuiDaoServerConfig>();
|
||||||
|
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<FastTunnelClient>();
|
var client = servicesProvider.GetRequiredService<FastTunnelClient>();
|
||||||
|
|
||||||
|
@ -193,7 +233,7 @@ namespace SuiDao.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
// 登录
|
// 登录
|
||||||
_client.Send(new Message<LogInByKeyMassage> { MessageType = MessageType.C_LogIn, Content = new LogInByKeyMassage { key = key } });
|
_client.Send(new Message<LogInByKeyMassage> { MessageType = MessageType.C_LogIn, Content = new LogInByKeyMassage { key = key, server_id = server.server_id } });
|
||||||
|
|
||||||
return _client;
|
return _client;
|
||||||
}, new SuiDaoServer { ServerAddr = server.ip, ServerPort = server.bind_port });
|
}, new SuiDaoServer { ServerAddr = server.ip, ServerPort = server.bind_port });
|
||||||
|
|
|
@ -15,8 +15,10 @@ namespace SuiDao.Server
|
||||||
{
|
{
|
||||||
public LogInMassage GetConfig(JObject content)
|
public LogInMassage GetConfig(JObject content)
|
||||||
{
|
{
|
||||||
var key = content.ToObject<LogInByKeyMassage>().key;
|
|
||||||
var res = HttpHelper.PostAsJson("https://api1.suidao.io/api/Client/GetTunnelByKey", $"{{ \"key\":\"{key}\"}}").Result;
|
var logMsg = content.ToObject<LogInByKeyMassage>();
|
||||||
|
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);
|
var jobj = JObject.Parse(res);
|
||||||
if ((bool)jobj["success"] == true)
|
if ((bool)jobj["success"] == true)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_LastSelectedProfileId>G:\GitHub\FastTunnel\SuiDao.Server\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
|
<_LastSelectedProfileId>D:\GitHub\FastTunnel\SuiDao.Server\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
|
||||||
|
<ShowAllFiles>false</ShowAllFiles>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
Loading…
Reference in New Issue
Block a user