using Microsoft.Win32; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; using System.Windows; using System.Windows.Forms; using Vinno.IUS.Common.Configuration; using OpenFileDialog = Microsoft.Win32.OpenFileDialog; namespace EncyptTool { /// /// MainWindow.xaml 的交互逻辑 /// public partial class MainWindow : Window { private string _defaultPath = @"../Server/Settings/Server/Setting.conf"; public MainWindow() { InitializeComponent(); SourcePath.Text = _defaultPath; OutputPath.Text = _defaultPath; } private void SelectSource_Click(object sender, RoutedEventArgs e) { var ofd = new OpenFileDialog { Filter = "(*.json,*.conf)|*.json;*.conf", }; if (ofd.ShowDialog() == true) { SourcePath.Text = ofd.FileName; OutputPath.Text = ofd.FileName; } } private void SelectOutput_Click(object sender, RoutedEventArgs e) { var openFileDialog = new FolderBrowserDialog(); if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { OutputPath.Text = openFileDialog.SelectedPath; } } private void EncryptButton_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(OutputPath.Text) || string.IsNullOrEmpty(SourcePath.Text)) { System.Windows.MessageBox.Show("Tip", "Source path or output path is empty!"); return; } string textToBeEncrypt = string.Empty; try { textToBeEncrypt = File.ReadAllText(SourcePath.Text); List simplfiedServiceList = null; if (SimpleServiceFlag.IsChecked != null && (bool)SimpleServiceFlag.IsChecked) { simplfiedServiceList = new List { vCloudServiceEnum.AccountService.ToString(), vCloudServiceEnum.LoginService.ToString(), vCloudServiceEnum.UnifyLogService.ToString(), vCloudServiceEnum.GatewayService.ToString(), vCloudServiceEnum.DatabaseService.ToString(), vCloudServiceEnum.StorageService.ToString(), vCloudServiceEnum.LiveVideoService.ToString(), vCloudServiceEnum.UploadService.ToString(), vCloudServiceEnum.RemedicalService.ToString(), vCloudServiceEnum.ReportService.ToString(), vCloudServiceEnum.ApiService.ToString(), vCloudServiceEnum.ShareService.ToString(), vCloudServiceEnum.ManagementService.ToString(), vCloudServiceEnum.TimeService.ToString(), vCloudServiceEnum.AdminService.ToString(), vCloudServiceEnum.AssignTerminalService.ToString() }; using (StreamReader file = File.OpenText(SourcePath.Text)) { using (JsonTextReader reader = new JsonTextReader(file)) { JObject o = (JObject)JToken.ReadFrom(reader); var services = o["Service"]; foreach (var servcie in services) { var serviceName = (servcie as JProperty).Name; if (!simplfiedServiceList.Contains(serviceName)) { var strToBeReplace= $"\"{serviceName}\"" + ": 1"; var strToBeReplace2 = $"\"{serviceName}\"" + ":1"; var replaceStr= $"\"{serviceName}\"" + ": 0"; textToBeEncrypt = Regex.Replace(textToBeEncrypt, strToBeReplace, replaceStr); textToBeEncrypt = Regex.Replace(textToBeEncrypt, strToBeReplace2, replaceStr); } } } } } } catch (Exception) { System.Windows.MessageBox.Show("File path is invalid!", "Error"); return; } var settingCrypter = new ConfigCrypter(); var encryptedSetting = settingCrypter.EncryptDES(textToBeEncrypt); if (string.IsNullOrEmpty(encryptedSetting)) { System.Windows.MessageBox.Show("Encrypt failed!", "Error"); } else { try { var fileName = Path.GetFileName(SourcePath.Text); var fileNameExtention = Path.GetExtension(SourcePath.Text); var writePath = Path.GetExtension(OutputPath.Text).Contains(fileNameExtention) ? OutputPath.Text : Path.Combine(OutputPath.Text, fileName); File.WriteAllText(writePath, encryptedSetting); System.Windows.MessageBox.Show("Encrypt success!", "Success"); } catch { System.Windows.MessageBox.Show("Writting encrypted setting file failed!", "Error"); } } } private void DecryptButton_Click(object sender, RoutedEventArgs e) { try { var textToBeDencrypt = File.ReadAllText(SourcePath.Text); var settingCrypter = new ConfigCrypter(); var encryptedSetting = settingCrypter.DecryptDES(textToBeDencrypt); var fileNameExtention = Path.GetExtension(SourcePath.Text); var writePath = Path.GetExtension(OutputPath.Text).Contains(fileNameExtention) ? OutputPath.Text : Path.Combine(OutputPath.Text, Path.GetFileName(SourcePath.Text)); File.WriteAllText(writePath, encryptedSetting); System.Windows.MessageBox.Show("Decrypt success!", "Success"); } catch { System.Windows.MessageBox.Show("Writting encrypted setting file failed!", "Error"); } } } }