mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-10-17 05:21:15 +08:00
2bbfee4a37
* Assets/logos (#782) * Added logo assets * Added PNG 1260x640 with white border Co-authored-by: 103filgualan <f.gualandi@crif.com> * OPENSSH KeyReader for more keys (#614) * OPENSSH KeyReader for more keys Add support to parse OpenSSH Keys with ECDSA 256/384/521 and RSA. https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key Change-Id: Iaa9cce0f2522e5fee377a82cb252f81f0b7cc563 * Fix ED25519Key KeyLength * Fix ED25519 PubKey-auth LeadingZeros of BigInteger-Conversion have to be removed before sending the Key. * Add interface to SftpFile #120 (#812) * Create ISftpFile interface. SftpFile sealed. Return ISftpFile from SftpClient instead of SftpFile. Make ISftpClient interface disposable. Co-authored-by: Wojciech Swieboda <wswieboda@chathamfinancial.com> * Start MessageListener with ThreadAbstraction.ExecuteThreadLongRunning (#902) * Fix Thread pool exhaustion due to MessageListener running on ThreadPool * Mark long running thread as background * Add async support to SftpClient and SftpFileStream (#819) * Add FEATURE_TAP and net472 target * Add TAP async support to SftpClient and SftpFileStream * Add async support to DnsAbstraction and SocketAbstraction * Add async support to *Connector and refactor the hierarchy * Add ConnectAsync to BaseClient * Add CODEOWNERS file. * Fix virus false-positive by Defender on Renci.SSHNet.Tests.dll (#867) Co-authored-by: Pedro Fonseca <pfonseca@qti.qualcomm.com> * Add unit tests for task-based asynchronous API (#906) * Fix runtime and culture dependant tests. * Set C# 7.3 in Tests.csproj to limit intellisense's suggestions under different targets * Add SftpClientTest.*Async * Add SftpFileStreamTest_OpenAsync_* * Add SftpFileStreamTest_WriteAsync_* * Add SftpFileStreamTest_ReadAsync_* * Align AppVeyor script with Test project target frameworks * correct 'Documenation' to 'Documentation' (#838) in the documentation's window title * Agent auth and Keygen (#794) * Allow to set PrivateKeyFile Key directly So you can add your own Key-Classes to SSH.NET * Add ED25519 ctor for just pub key part. * Make ECDSA Key Bits accessible You cant export imported CngKeys. To be able to export them to agent or Key-Files make the private bits also accessible. * Better NETFRAMEWORK vs NETSTANDARD handling * Add Comment Property to Key * Add IPrivateKeySource So Extension can add own PrivateKeyFiles, e.g. PuttyKeyFile. * Use cryptographically secure random number generator. Fixes CVE-2022-29245. * Remove unused import. * Add IBaseClient for BaseClient and ISftpClient to inherit from (#975) Add IBaseClient for BaseClient and ISftpClient to inherit from * fix typo (#999) * Fix Seek Operations in SftpFileStream (#910) * Fix offset operations in SftpFileStream.Seek * Fix seek exception message and add default case for invalid seek origin * Use named params when throwing ArgumentException * Add tests for seeking from end of file * Add back copyright to license. (#1060) Fixes #1059. * Removing old target frameworks (#1109) Remove support for legacy / deprecated target frameworks while adding support for .NET 6.0 (and higher). The supported target frameworks are now: * .NETFramework 4.6.2 (and higher) * .NET Standard 2.0 * .NET 6.0 (and higher) * Remove old features [Part 1] (#1117) Remove obsolete feature switches (now that we've remove support for legacy target frameworks) and remove corresponding conditional code. * Remove FEATURE_DIRECTORYINFO_ENUMERATEFILES (#1119) * Remove FEATURE_DIRECTORYINFO_ENUMERATEFILES * Add exception documentation * Fix some (lots of) issues reported by analyzers. (#1125) Fix some (lots of) issues reported by analyzers. * Round 2 of analyzer fixes and general cleanup. (#1132) * Analyzer fixes round 3. (#1135) * Replace Array<T>.Empty with Array.Empty<T>() (#1137) * Replace IsNullOrWhiteSpace extension (#1142) * Use License Expression for NuGet Package licenseUrl is deprecated, see https://github.com/NuGet/Announcements/issues/32 * Integration tests * Remove todos * Update CODEOWNERS * Use correct SSH.NET * ListDirectoryAsync return IAsyncEnumerable (#1126) * ListDirectoryAsync return IAsyncEnumerable * Fix documentation * Update README.md * Fix * Add Sftp ListDirectoryAsync test * Revert * Integration tests for ListDirectoryAsync with IAsyncEnumerable * Fix the assembly resolution build warning (#1165) * Delete performance/longrunning tests (#1143) Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com> * Move Integration tests (#1173) * Renci.SshNet.IntegrationTests * Renci.SshNet.TestTools.OpenSSH * Move integration tests to main repo * Move old tests to new integration tests * Move old integration tests to new integration tests * Move more tests * Move authentication tests * Move SshClientTests * Fix some tests * Remove duplicated test * Poc of ProcessDisruptor * Rename * Some fixes * Remove performance tests * Small improvements * Add a benchmarks project (#1151) * Add a benchmarks project * Small improvements --------- Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com> * Use ExceptionDispatchInfo to retain call stack in Session.WaitOnHandle() (#936) * Use ExceptionDispatchInfo to retain call stack in Session.WaitOnHandle() * merge * Update src/Renci.SshNet/Session.cs Co-authored-by: Rob Hague <rob.hague00@gmail.com> --------- Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com> Co-authored-by: Rob Hague <rob.hague00@gmail.com> * Support SHA256 fingerprints for host key validation (#1098) * Add tests for HostKeyEventArgs * Add SHA256 fingerprint support * Add support for RSA SHA-2 public key algorithms (#1177) * Abstract out the hash algorithm from RsaDigitalSignature * Add integration tests * Add DigitalSignature property to KeyHostAlgorithm * Add IHostAlgorithmsProvider interface * Verify the host signature * Fix HostKeyEventArgsTest after merge * Remove PubkeyAcceptedAlgorithms ssh-rsa * Add test coverage for RSA keys in PrivateKeyFile * Obsolete IPrivateKeySource --------- Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com> * Improvements after #1177 (#1180) * Use ExceptionDispatchInfo in more places (#1182) Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com> * Try to "fix" the flaky test (#1185) * Enable DSA tests (#1181) Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com> * FingerPrints (#1186) * Use OS-agnostic socket error codes to allow tests run on different OSes (#1179) SocketErrorCode is OS agnostic, ErrorCode is OS specific. On Windows ErrorCode = (int) SocketErrorCode, but on Mac and Unix it is not. For example ExitCode for HostNotFound (11001) on Windows is 11001, on Mac & Unix is -131073. So testing for ExitCode == 11001 fails on Mac & Unix. Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com> * Fix for channel session semaphore from thread blocking (#1071) * Merging fix from @clivetong into our own SSH.NET fork - The following article describes some of the issues with the double check lock that we have seen issues with: https://www.sudhanshutheone.com/posts/double-check-lock-csharp * Merging fix from @clivetong into our own SSH.NET fork - The following article describes some of the issues with the double check lock that we have seen issues with: https://www.sudhanshutheone.com/posts/double-check-lock-csharp * Update Channel to fix AppVeyor failure (field should be readonly) * Update ISftpClient for #120 (#1193) * Implement set last write and access time (#1194) * Add/migrate hmac+cipher integration tests (#1189) * Add/migrate hmac+cipher integration tests * fix integration tests --------- Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com> * Update tests for SetLastAccessTime(Utc) to also verify the time component and the Kind of the DateTime value returned by GetLastAccessTime(Utc). (#1198) --------- Co-authored-by: Filippo Gualandi <filippo.gualandi@gmail.com> Co-authored-by: 103filgualan <f.gualandi@crif.com> Co-authored-by: Stefan Rinkes <darinkes@users.noreply.github.com> Co-authored-by: wxtsxt <wojciech.swieboda@gmail.com> Co-authored-by: Wojciech Swieboda <wswieboda@chathamfinancial.com> Co-authored-by: Igor Milavec <igor.milavec@gmail.com> Co-authored-by: drieseng <gert.driesen@telenet.be> Co-authored-by: Pedro Fonseca <pbfonseca@gmail.com> Co-authored-by: Pedro Fonseca <pfonseca@qti.qualcomm.com> Co-authored-by: Maximiliano Jabase <maxijabase@gmail.com> Co-authored-by: Owen Krueger <37021716+Owen-Krueger@users.noreply.github.com> Co-authored-by: Masuri <psh0258@gmail.com> Co-authored-by: LemonPi314 <49930425+LemonPi314@users.noreply.github.com> Co-authored-by: Gert Driesen <gertdriesen@msn.com> Co-authored-by: Rob Hague <rob.hague00@gmail.com> Co-authored-by: Rob Hague <rh@johnstreetcapital.com> Co-authored-by: Marius Thesing <marius.thesing@gmail.com> Co-authored-by: Dāvis Mošenkovs <davikovs@gmail.com> Co-authored-by: Dmitry Tsarevich <dimhotepus@users.noreply.github.com> Co-authored-by: Patrick Yates <114094360+patrick-yates-redgate@users.noreply.github.com>
159 lines
8.3 KiB
XML
159 lines
8.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<UsingTask TaskName="Zip" AssemblyFile="$(MSBuildThisFileDirectory)target\nuget\packages\$(MSBuildTasksPackageId).$(MSBuildTasksPackageVersion)\tools\MSBuild.Community.Tasks.dll"/>
|
|
<PropertyGroup>
|
|
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
|
|
<BuildRoot>$(MSBuildThisFileDirectory)</BuildRoot>
|
|
<NuGetExe>$(BuildRoot)target\nuget\nuget.exe</NuGetExe>
|
|
<MSBuildTasksPackageId>MSBuildTasks</MSBuildTasksPackageId>
|
|
<MSBuildTasksPackageVersion>1.5.0.214</MSBuildTasksPackageVersion>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<VisualStudioVersionModern Include="2022">
|
|
<SolutionFile>$(MSBuildThisFileDirectory)..\src\Renci.SshNet.sln</SolutionFile>
|
|
<VisualStudioVersion>17.0</VisualStudioVersion>
|
|
</VisualStudioVersionModern>
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<TargetFrameworkModern Include=".NET Framework 4.6.2">
|
|
<OutputDirectory>Renci.SshNet\bin\$(Configuration)\net462</OutputDirectory>
|
|
<Moniker>net462</Moniker>
|
|
</TargetFrameworkModern>
|
|
<TargetFrameworkModern Include=".NETStandard 2.0">
|
|
<OutputDirectory>Renci.SshNet\bin\$(Configuration)\netstandard2.0</OutputDirectory>
|
|
<Moniker>netstandard2.0</Moniker>
|
|
</TargetFrameworkModern>
|
|
<TargetFrameworkModern Include=".NETStandard 2.1">
|
|
<OutputDirectory>Renci.SshNet\bin\$(Configuration)\netstandard2.1</OutputDirectory>
|
|
<Moniker>netstandard2.1</Moniker>
|
|
</TargetFrameworkModern>
|
|
<TargetFrameworkModern Include=".NET 6.0">
|
|
<OutputDirectory>Renci.SshNet\bin\$(Configuration)\net6.0</OutputDirectory>
|
|
<Moniker>net6.0</Moniker>
|
|
</TargetFrameworkModern>
|
|
<TargetFrameworkModern Include=".NET 7.0">
|
|
<OutputDirectory>Renci.SshNet\bin\$(Configuration)\net7.0</OutputDirectory>
|
|
<Moniker>net7.0</Moniker>
|
|
</TargetFrameworkModern>
|
|
</ItemGroup>
|
|
|
|
<Target Name="CleanModern" DependsOnTargets="CleanSolutionModern">
|
|
<RemoveDir Directories="$(MSBuildThisFileDirectory)target"/>
|
|
</Target>
|
|
|
|
|
|
<Target Name="CleanSolutionModern" Outputs="%(VisualStudioVersionModern.Identity)">
|
|
<ItemGroup>
|
|
<ProjectToBuild Remove="@(ProjectToBuild)"/>
|
|
<ProjectToBuild Include="%(VisualStudioVersionModern.SolutionFile)">
|
|
<Properties>Configuration=Release;VisualStudioVersion=%(VisualStudioVersionModern.VisualStudioVersion)</Properties>
|
|
</ProjectToBuild>
|
|
</ItemGroup>
|
|
<MSBuild Projects="@(ProjectToBuild)" Targets="Clean"/>
|
|
</Target>
|
|
|
|
<Target Name="RestoreNuGetPackagesModern" DependsOnTargets="DownloadNuGet" Outputs="%(VisualStudioVersionModern.Identity)">
|
|
<Message Text="Restoring nuget packages for '%(VisualStudioVersionModern.SolutionFile)'..." Importance="High"/>
|
|
<Exec Command="$(NuGetExe) restore "%(VisualStudioVersionModern.SolutionFile)""/>
|
|
</Target>
|
|
|
|
<Target Name="BuildModern" DependsOnTargets="RestoreNuGetPackagesModern" Outputs="%(VisualStudioVersionModern.Identity)">
|
|
<ItemGroup>
|
|
<ProjectToBuild Remove="@(ProjectToBuild)"/>
|
|
<ProjectToBuild Include="%(VisualStudioVersionModern.SolutionFile)">
|
|
<Properties>Configuration=Release;VisualStudioVersion=%(VisualStudioVersionModern.VisualStudioVersion)</Properties>
|
|
</ProjectToBuild>
|
|
</ItemGroup>
|
|
<MSBuild Projects="@(ProjectToBuild)" ToolsVersion="%(VisualStudioVersionModern.ToolsVersion)" Targets="Rebuild"/>
|
|
</Target>
|
|
|
|
<Target Name="Package" DependsOnTargets="CreateNuGetPackage;CreateBinPackage;GenerateHelpFile"/>
|
|
|
|
<Target Name="ValidatePackage" DependsOnTargets="ValidatePackageModern"/>
|
|
|
|
<Target Name="ValidatePackageModern" DependsOnTargets="CheckNuGetPackageDirectory" Outputs="%(TargetFrameworkModern.Identity)">
|
|
<Error Text="The 'Renci.SshNet.dll' file is not available for %(TargetFrameworkModern.Identity) in $(NuGetPackageDirectory)\lib\%(TargetFrameworkModern.Moniker)." Condition="!Exists('$(NuGetPackageDirectory)\lib\%(TargetFrameworkModern.Moniker)\Renci.SshNet.dll')"/>
|
|
<Error Text="The 'Renci.SshNet.xml' file is not available for %(TargetFrameworkModern.Identity) in $(NuGetPackageDirectory)\lib\%(TargetFrameworkModern.Moniker)." Condition="!Exists('$(NuGetPackageDirectory)\lib\%(TargetFrameworkModern.Moniker)\Renci.SshNet.xml')"/>
|
|
</Target>
|
|
|
|
<Target Name="CreateNuGetPackage" DependsOnTargets="ValidatePackage;CheckNuGetPackageDirectory;CheckReleaseVersion">
|
|
<Exec Command="$(NuGetExe) pack $(MSBuildThisFileDirectory)nuget\SSH.NET.nuspec -OutputDirectory "$(MSBuildThisFileDirectory)target" -Version "$(ReleaseVersion)" -Properties "copyright=2012-$([System.DateTime]::Now.Year), RENCI" -BasePath "$(NuGetPackageDirectory)" -NonInteractive"/>
|
|
</Target>
|
|
|
|
<Target Name="GenerateHelpFile" DependsOnTargets="CheckReleaseVersion">
|
|
<Error Text="Please install Sandcastle, and ensure the SHFBROOT environment variable is set." Condition="'$(SHFBROOT)'==''"/>
|
|
<MSBuild Projects="$(MSBuildThisFileDirectory)sandcastle\SSH.NET.shfbproj"/>
|
|
<Move SourceFiles="$(MSBuildThisFileDirectory)target\help\SshNet.Help.chm" DestinationFiles="$(MSBuildThisFileDirectory)target\SSH.NET-$(ReleaseVersion)-help.chm"/>
|
|
</Target>
|
|
|
|
<Target Name="PreparePackageModern" DependsOnTargets="BuildModern;CheckNuGetPackageDirectory" Outputs="%(TargetFrameworkModern.Identity)">
|
|
<ItemGroup>
|
|
<BuildOutput Remove="@(BuildOutput)"/>
|
|
<BuildOutput Include="$(MSBuildThisFileDirectory)..\src\%(TargetFrameworkModern.OutputDirectory)\Renci.SshNet.dll"/>
|
|
<BuildOutput Include="$(MSBuildThisFileDirectory)..\src\%(TargetFrameworkModern.OutputDirectory)\Renci.SshNet.xml"/>
|
|
</ItemGroup>
|
|
<Copy SourceFiles="@(BuildOutput)" DestinationFolder="$(NuGetPackageDirectory)\lib\%(TargetFrameworkModern.Moniker)"/>
|
|
</Target>
|
|
|
|
<Target Name="CreateBinPackage" DependsOnTargets="PrepareMSBuildTasksPackage;ValidatePackage;CheckReleaseVersion;CheckBinaryZipPackageDirectory">
|
|
<ItemGroup>
|
|
<Files Remove="@(Files)"/>
|
|
<Files Include="$(NuGetPackageDirectory)\lib\**\*.*"/>
|
|
<Files Include="$(MSBuildThisFileDirectory)..\LICENSE"/>
|
|
<Files Include="$(MSBuildThisFileDirectory)..\THIRD-PARTY-NOTICES.TXT"/>
|
|
</ItemGroup>
|
|
<Copy SourceFiles="@(Files)" DestinationFolder="$(BinaryZipPackageDirectory)\%(RecursiveDir)"/>
|
|
<ItemGroup>
|
|
<Files Remove="@(Files)"/>
|
|
<Files Include="$(BinaryZipPackageDirectory)\**"/>
|
|
</ItemGroup>
|
|
<Zip ZipFileName="$(MSBuildThisFileDirectory)target\SSH.NET-$(ReleaseVersion)-bin.zip" Files="@(Files)" WorkingDirectory="$(BinaryZipPackageDirectory)"/>
|
|
</Target>
|
|
|
|
<Target Name="DownloadNuGet">
|
|
<MakeDir Directories="$(MSBuildThisFileDirectory)target\nuget"/>
|
|
<DownloadFile
|
|
Address="https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
|
|
FileName="$(MSBuildThisFileDirectory)target\nuget\nuget.exe"/>
|
|
</Target>
|
|
<Target Name="PrepareMSBuildTasksPackage" DependsOnTargets="DownloadNuGet">
|
|
<Exec Command="$(NuGetExe) install $(MSBuildTasksPackageId) -Version $(MSBuildTasksPackageVersion) -OutputDirectory "$(MSBuildThisFileDirectory)target\nuget\packages" -Verbosity quiet"/>
|
|
</Target>
|
|
|
|
<Target Name="CheckReleaseVersion" Condition="'$(ReleaseVersion)'==''">
|
|
<Error Text= "Please specify the version number of the release (using the "ReleaseVersion" property)."/>
|
|
</Target>
|
|
|
|
<Target Name="CheckNuGetPackageDirectory" DependsOnTargets="CheckReleaseVersion">
|
|
<PropertyGroup>
|
|
<NuGetPackageDirectory>$(MSBuildThisFileDirectory)target\nuget-$(ReleaseVersion)</NuGetPackageDirectory>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<Target Name="CheckBinaryZipPackageDirectory" DependsOnTargets="CheckReleaseVersion">
|
|
<PropertyGroup>
|
|
<BinaryZipPackageDirectory>$(MSBuildThisFileDirectory)target\bin-$(ReleaseVersion)</BinaryZipPackageDirectory>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<UsingTask TaskName="DownloadFile" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
|
|
<ParameterGroup>
|
|
<Address ParameterType="System.String" Required="true"/>
|
|
<FileName ParameterType="System.String" Required="true" />
|
|
</ParameterGroup>
|
|
<Task>
|
|
<Reference Include="System" />
|
|
<Code Type="Fragment" Language="cs">
|
|
<![CDATA[
|
|
// Workaround 'Could not create SSL/TLS secure channel' issue due to TLS 1.1 being
|
|
// the default on earlier versions of .NET
|
|
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
|
|
// Download file
|
|
new System.Net.WebClient().DownloadFile(Address, FileName);
|
|
]]>
|
|
</Code>
|
|
</Task>
|
|
</UsingTask>
|
|
</Project> |