Skip to content

Commit

Permalink
Remove DotNetZip NuGet package.
Browse files Browse the repository at this point in the history
  • Loading branch information
nobody committed Nov 14, 2024
1 parent 93690e8 commit 2d024aa
Show file tree
Hide file tree
Showing 7 changed files with 102 additions and 16 deletions.
54 changes: 49 additions & 5 deletions V2RayGCon/Misc/Utils.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Reflection;
using System.Text.RegularExpressions;
using Ionic.Zip;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using V2RayGCon.Resources.Resx;
Expand Down Expand Up @@ -368,18 +368,62 @@ public static string GetAssemblyVersion()

public static bool VerifyZipFile(string zipFile)
{
using (ZipFile zip = ZipFile.Read(zipFile))
using (ZipArchive archive = ZipFile.OpenRead(zipFile))
{
return zip.Entries.Count > 0;
var c = archive.Entries.Count;
return c > 0;
}
}

public static void DecompressZipFile(string zipFile, string outFolder)
{
// let downloader handle exception
using (ZipFile zip = ZipFile.Read(zipFile))
using (ZipArchive archive = ZipFile.OpenRead(zipFile))
{
zip.ExtractAll(outFolder, ExtractExistingFileAction.OverwriteSilently);
ExtractToDirectory(archive, outFolder, true);
}
}

// credit: https://stackoverflow.com/questions/14795197/forcefully-replacing-existing-files-during-extracting-file-using-system-io-compr
static void ExtractToDirectory(
ZipArchive archive,
string destinationDirectoryName,
bool overwrite
)
{
if (!overwrite)
{
archive.ExtractToDirectory(destinationDirectoryName);
return;
}

DirectoryInfo di = Directory.CreateDirectory(destinationDirectoryName);
string destinationDirectoryFullPath = di.FullName;

foreach (ZipArchiveEntry file in archive.Entries)
{
string completeFileName = Path.GetFullPath(
Path.Combine(destinationDirectoryFullPath, file.FullName)
);

if (
!completeFileName.StartsWith(
destinationDirectoryFullPath,
StringComparison.OrdinalIgnoreCase
)
)
{
throw new IOException(
"Trying to extract file outside of destination directory. See this link for more info: https://snyk.io/research/zip-slip-vulnerability"
);
}

if (file.Name == "")
{ // Assuming Empty for Directory
Directory.CreateDirectory(Path.GetDirectoryName(completeFileName));
continue;
}
file.ExtractToFile(completeFileName, true);
}
}
#endregion
Expand Down
3 changes: 2 additions & 1 deletion V2RayGCon/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,12 @@
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.6.0")]
[assembly: AssemblyVersion("2.0.6.1")]
[assembly: AssemblyFileVersion("1.0.0.0")]

/*
v2.0.6.1 Remove DotNetZip NuGet package.
--------------------------------------------------------------------
v2.0.5.4 Add std.Servers:GetFilteredServers(keyword).
v2.0.5.3 Add WebView2 form for WebUI.
Expand Down
7 changes: 3 additions & 4 deletions V2RayGCon/V2RayGCon.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,6 @@
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.4.4.1\lib\net45\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="DotNetZip, Version=1.16.0.0, Culture=neutral, PublicKeyToken=6583c7c814667745, processorArchitecture=MSIL">
<HintPath>..\packages\DotNetZip.1.16.0\lib\net40\DotNetZip.dll</HintPath>
</Reference>
<Reference Include="Dynamitey, Version=2.0.10.189, Culture=neutral, PublicKeyToken=cbf53ea3aeb972c6, processorArchitecture=MSIL">
<HintPath>..\packages\Dynamitey.2.0.10.189\lib\net40\Dynamitey.dll</HintPath>
</Reference>
Expand Down Expand Up @@ -129,6 +126,8 @@
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Management" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
Expand Down Expand Up @@ -651,7 +650,7 @@
<PostBuildEvent>set "libsDir=libs\"
set "copyFolderList=3rd"
set "pluginDlls=VgcApis NeoLuna Pacman ProxySetter"
set "otherDlls=Microsoft.Web.WebView2.Core Microsoft.Web.WebView2.WinForms Microsoft.Web.WebView2.Wpf System.Buffers NDesk.Options MihaZupan.HttpToSocks5Proxy HtmlAgilityPack Neo.Lua ImpromptuInterface Dynamitey AutocompleteMenu-ScintillaNET DotNetZip Newtonsoft ScintillaNET zxing Castle.Core Moq System.Runtime.CompilerServices.Unsafe System.Threading.Tasks.Extensions"
set "otherDlls=Microsoft.Web.WebView2.Core Microsoft.Web.WebView2.WinForms Microsoft.Web.WebView2.Wpf System.Buffers NDesk.Options MihaZupan.HttpToSocks5Proxy HtmlAgilityPack Neo.Lua ImpromptuInterface Dynamitey AutocompleteMenu-ScintillaNET Newtonsoft ScintillaNET zxing Castle.Core Moq System.Runtime.CompilerServices.Unsafe System.Threading.Tasks.Extensions"

call:RemoveDbgFiles "%25otherDlls%25"

Expand Down
1 change: 0 additions & 1 deletion V2RayGCon/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
<packages>
<package id="AutoCompleteMenu-ScintillaNET" version="1.6.1" targetFramework="net45" />
<package id="Castle.Core" version="4.4.1" targetFramework="net45" />
<package id="DotNetZip" version="1.16.0" targetFramework="net45" />
<package id="Dynamitey" version="2.0.10.189" targetFramework="net45" />
<package id="ImpromptuInterface" version="7.0.1" targetFramework="net45" />
<package id="jacobslusser.ScintillaNET" version="3.6.3" targetFramework="net45" />
Expand Down
4 changes: 2 additions & 2 deletions V2RayGConTests/UITest.cs → V2RayGConTests/UITests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
namespace V2RayGCon.Test
{
[TestClass]
public class UITest
public class UITests
{
public UITest() { }
public UITests() { }

[TestMethod]
public void UpdateControlOnDemandTest()
Expand Down
43 changes: 42 additions & 1 deletion V2RayGConTests/LibTest.cs → V2RayGConTests/UtilsTests.cs
Original file line number Diff line number Diff line change
@@ -1,17 +1,58 @@
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json.Linq;
using V2RayGCon.Misc;
using V2RayGCon.Test.Resource.Resx;
using static V2RayGCon.Misc.Utils;

namespace V2RayGCon.Test
{
[TestClass]
public class LibTest
public class UtilsTests
{
static readonly long SpeedtestTimeout = VgcApis.Models.Consts.Core.SpeedtestTimeout;

[TestMethod]
public void UnzipFileTest()
{
var zip = @"test.zip";
var dir = @"ziptest";

// create test.zip
var files = new List<string> { @"V2RayGCon.pdb", @"V2RayGCon.Test.pdb" };
using (FileStream fs = new FileStream(zip, FileMode.Create))
using (ZipArchive za = new ZipArchive(fs, ZipArchiveMode.Create))
{
foreach (var file in files)
{
za.CreateEntryFromFile(file, file);
}
}

Assert.IsTrue(VerifyZipFile(zip));

try
{
DecompressZipFile(zip, dir);
}
catch
{
Assert.Fail($"failed to unzip {zip}");
}

foreach (var file in files)
{
var src = File.ReadAllText(file);
var dest = File.ReadAllText(Path.Combine(dir, file));
var hashSrc = VgcApis.Misc.Utils.Sha512Hex(src);
var hashDest = VgcApis.Misc.Utils.Sha512Hex(dest);
Assert.AreEqual(hashSrc, hashDest);
}
}

[TestMethod]
public void ParseStatApiResultTestXray()
{
Expand Down
6 changes: 4 additions & 2 deletions V2RayGConTests/V2RayGConTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
Expand All @@ -79,10 +81,10 @@
<Compile Include="Experiments\CoreServCtrlWrapperPerfTests.cs" />
<Compile Include="Experiments\FileReadWriteTests.cs" />
<Compile Include="MiscCachesTests\ZipStrLruTests.cs" />
<Compile Include="UITest.cs" />
<Compile Include="UITests.cs" />
<Compile Include="MiscCachesTests\CacheTest.cs" />
<Compile Include="CoreServerTest.cs" />
<Compile Include="LibTest.cs" />
<Compile Include="UtilsTests.cs" />
<Compile Include="ImportTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Resource\Resx\TestConst.Designer.cs">
Expand Down

0 comments on commit 2d024aa

Please sign in to comment.