using System.Text; using ICSharpCode.SharpZipLib.Tar; namespace InnovEnergy.App.OpenVpnCertificatesServer; public static class Utils { public static void WriteFile(this TarOutputStream tar, String fileName, Byte[] contents, Boolean executable = false) { var header = new TarHeader { Name = fileName.Trim('\\', '/'), Mode = executable ? 33261 : 33188, // chmod: 100755, 100644 Size = contents.Length, ModTime = DateTime.UtcNow, TypeFlag = TarHeader.LF_NORMAL, // normal file UserName = "", GroupName = "", }; var entry = new TarEntry(header); tar.PutNextEntry(entry); tar.Write(contents); tar.CloseEntry(); } public static void WriteTextFile(this TarOutputStream tar, String fileName, String contents, Encoding? encoding = null, Boolean executable = false) { encoding ??= Encoding.UTF8; var data = encoding.GetBytes(contents); tar.WriteFile(fileName, data, executable); } }