微调部分代码

This commit is contained in:
SpringHgui 2021-06-12 15:29:22 +08:00
parent 9634b921e5
commit 320efdaf50
12 changed files with 115 additions and 94 deletions

View File

@ -6,15 +6,15 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" />
<PackageReference Include="NLog" Version="4.7.5" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="NLog" Version="4.7.10" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.13.0-readme-preview" />
</ItemGroup>
<ItemGroup>

View File

@ -17,7 +17,7 @@ namespace FastTunnel.Client
{
public static void Main(string[] args)
{
var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
try
{
CreateHostBuilder(args).Build().Run();

View File

@ -127,8 +127,10 @@ namespace FastTunnel.Core.Client
}
}
public void Login(Func<Connecter> login, SuiDaoServer serverConfig)
public void Start(Func<Connecter> login, SuiDaoServer serverConfig)
{
_logger.LogInformation("===== FastTunnel Client Start =====");
_serverConfig = serverConfig;
lastLogin = login;

View File

@ -6,6 +6,8 @@ using System.Collections.Concurrent;
using System;
using FastTunnel.Core.Listener;
using FastTunnel.Core.Dispatchers;
using System.Threading.Tasks;
using System.Threading;
namespace FastTunnel.Core.Client
{
@ -26,9 +28,9 @@ namespace FastTunnel.Core.Client
ServerSettings = settings;
}
public void Run()
public void Run(CancellationToken cancellationToken)
{
_logger.LogDebug("FastTunnel Server Start");
_logger.LogInformation("===== FastTunnel Server Starting =====");
CheckSettins();
@ -68,5 +70,12 @@ namespace FastTunnel.Core.Client
_logger.LogInformation($"监听HTTP请求 -> {ServerSettings.BindAddr}:{ServerSettings.WebProxyPort}");
}
public void Stop(CancellationToken cancellationToken)
{
_logger.LogInformation("===== FastTunnel Server Stoping =====");
// TODO:释放资源和线程
}
}
}

View File

@ -11,13 +11,20 @@ namespace FastTunnel.Core.Extensions
{
public static class ServicesExtensions
{
/// <summary>
/// 添加服务端后台进程
/// </summary>
/// <param name="services"></param>
public static void AddFastTunnelServer(this IServiceCollection services)
{
services.AddTransient<IFastTunnelAuthenticationFilter, DefaultAuthenticationFilter>();
services.AddHostedService<ServiceFastTunnelServer>();
}
/// <summary>
/// 添加客户端后台进程
/// </summary>
/// <param name="services"></param>
public static void AddFastTunnelClient(this IServiceCollection services) {
services.AddSingleton<FastTunnelClient>()
.AddSingleton<ClientHeartHandler>()

View File

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net5.0</TargetFramework>
<ApplicationIcon />
<StartupObject />
<PackageProjectUrl>https://github.com/SpringHgui/FastTunnel</PackageProjectUrl>
@ -32,17 +32,17 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="NLog" Version="4.6.8" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" />
<PackageReference Include="System.Private.ServiceModel" Version="4.7.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="NLog" Version="4.7.10" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.7.2" />
<PackageReference Include="System.Private.ServiceModel" Version="4.8.1" />
</ItemGroup>
<ItemGroup>

View File

@ -12,10 +12,9 @@ namespace FastTunnel.Core.Services
{
public class ServiceFastTunnelClient : IHostedService
{
ILogger<ServiceFastTunnelClient> _logger;
IConfiguration _configuration;
FastTunnelClient _fastTunnelClient;
ClientConfig config;
readonly ILogger<ServiceFastTunnelClient> _logger;
readonly FastTunnelClient _fastTunnelClient;
readonly ClientConfig _config;
public ServiceFastTunnelClient(
ILogger<ServiceFastTunnelClient> logger,
@ -23,48 +22,47 @@ namespace FastTunnel.Core.Services
FastTunnelClient fastTunnelClient)
{
_logger = logger;
_configuration = configuration;
_fastTunnelClient = fastTunnelClient;
_config = configuration.Get<AppSettings>().ClientSettings;
}
public Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("===== FastTunnel Client Start =====");
config = _configuration.Get<AppSettings>().ClientSettings;
_fastTunnelClient.Login(() =>
return Task.Run(() =>
{
Connecter _client;
_fastTunnelClient.Start(() =>
{
Connecter _client;
try
{
// 连接到的目标IP
_client = new Connecter(config.Common.ServerAddr, config.Common.ServerPort);
_client.Connect();
}
catch (Exception)
{
Thread.Sleep(5000);
throw;
}
// 登录
_client.Send(new Message<LogInMassage>
{
MessageType = MessageType.C_LogIn,
Content = new LogInMassage
try
{
Webs = config.Webs,
SSH = config.SSH,
AuthInfo = "ODadoNDONODHSoDMFMsdpapdoNDSHDoadpwPDNoWAHDoNfa"
},
});
// 连接到的目标IP
_client = new Connecter(_config.Common.ServerAddr, _config.Common.ServerPort);
_client.Connect();
}
catch (Exception)
{
Thread.Sleep(5000);
throw;
}
return _client;
}, config.Common);
// 登录
_client.Send(new Message<LogInMassage>
{
MessageType = MessageType.C_LogIn,
Content = new LogInMassage
{
Webs = _config.Webs,
SSH = _config.SSH,
AuthInfo = "ODadoNDONODHSoDMFMsdpapdoNDSHDoadpwPDNoWAHDoNfa"
},
});
return Task.CompletedTask;
return _client;
}, _config.Common);
}, cancellationToken);
}
public Task StopAsync(CancellationToken cancellationToken)

View File

@ -13,24 +13,26 @@ using System.Linq;
using System.Runtime.ExceptionServices;
using System.Threading;
using System.Threading.Tasks;
using FastTunnel.Core.Models;
namespace FastTunnel.Core.Services
{
public class ServiceFastTunnelServer : IHostedService
{
ILogger<ServiceFastTunnelServer> _logger;
readonly ILogger<ServiceFastTunnelServer> _logger;
readonly IFastTunnelAuthenticationFilter _authenticationFilter;
readonly AppSettings _appSettings;
FastTunnelServer _fastTunnelServer;
IFastTunnelAuthenticationFilter _authenticationFilter;
IConfiguration _configuration;
public ServiceFastTunnelServer(
ILogger<ServiceFastTunnelServer> logger,
IConfiguration configuration,
IFastTunnelAuthenticationFilter authenticationFilter)
{
_configuration = configuration;
_authenticationFilter = authenticationFilter;
_logger = logger;
_appSettings = configuration.Get<AppSettings>();
AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
@ -67,31 +69,31 @@ namespace FastTunnel.Core.Services
public Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("===== FastTunnel Server Starting =====");
_fastTunnelServer = new FastTunnelServer(_logger, _configuration.Get<AppSettings>().ServerSettings);
FastTunnelGlobal.AddFilter(_authenticationFilter);
try
return Task.Run(() =>
{
_fastTunnelServer.Run();
_fastTunnelServer = new FastTunnelServer(_logger, _appSettings.ServerSettings);
FastTunnelGlobal.AddFilter(_authenticationFilter);
_logger.LogDebug("Server Run Success");
}
catch (Exception ex)
{
// NLog: catch any exception and log it.
_logger.LogError(ex, "Server Error");
Console.WriteLine(ex);
}
try
{
_fastTunnelServer.Run(cancellationToken);
}
catch (Exception ex)
{
// NLog: catch any exception and log it.
_logger.LogError(ex, "Server Error");
Console.WriteLine(ex);
}
return Task.CompletedTask;
}, cancellationToken);
}
public Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("===== FastTunnel Server Stoping =====");
return Task.CompletedTask;
return Task.Run(() =>
{
_fastTunnelServer.Stop(cancellationToken);
}, cancellationToken);
}
}
}

View File

@ -17,10 +17,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="5.0.0" />
<PackageReference Include="NLog" Version="4.7.6" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="6.0.0-preview.4.21253.7" />
<PackageReference Include="NLog" Version="4.7.10" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.13.0-readme-preview" />
</ItemGroup>
<ItemGroup>

View File

@ -43,7 +43,6 @@ namespace FastTunnel.Server
.AddJsonFile($"config/appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
});
})
.ConfigureServices((hostContext, services) =>
{

View File

@ -9,11 +9,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastTunnel.Core", "FastTunn
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastTunnel.Server", "FastTunnel.Server\FastTunnel.Server.csproj", "{DEF2E322-9075-4C3F-9967-7EAF0EE28CEB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "杂项", "杂项", "{6B874530-F9F3-4BEE-A018-566458AA2E4F}"
ProjectSection(SolutionItems) = preProject
Dockerfile = Dockerfile
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{0E2A9DA2-26AE-4657-B4C5-3A913E2F5A3C}"
EndProject
Global

9
addhost.bat Normal file
View File

@ -0,0 +1,9 @@
@echo off
echo 127.0.0.1 test.cc >>C:\Windows\System32\drivers\etc\hosts
echo 127.0.0.1 test.test.cc >>C:\Windows\System32\drivers\etc\hosts
echo 127.0.0.1 test1.test.cc >>C:\Windows\System32\drivers\etc\hosts
echo 127.0.0.1 test111.test.cc >>C:\Windows\System32\drivers\etc\hosts
echo 127.0.0.1 test111.test.cc >>C:\Windows\System32\drivers\etc\hosts
echo 127.0.0.1 www.abc.com >>C:\Windows\System32\drivers\etc\hosts
pause