public static void GenerateConfigFile() { if (String.IsNullOrEmpty(configTpl)) { configTpl = File.ReadAllText(App.AppDataDirectory + settings.GaConfigTemplateFileName); } var configText = configTpl.Replace("$port$", settings.GaPort.ToString()) .Replace("$profile$", settings.GaProfile) .Replace("$app-ids$", settings.GaAppIds); File.WriteAllText(App.AppDataDirectory + settings.GaConfigFileName, configText); Operation.GrantAccessControl(App.AppDataDirectory + settings.GaConfigFileName); }
public static void Update() { if (updating) { return; } updating = true; if (updateTimer != null) { updateTimer.Dispose(); } updateTimer = new System.Timers.Timer(settings.OnlineRulesUpdateInterval * 1000); updateTimer.Elapsed += (sender, e) => { Update(); }; updateTimer.Start(); UpdateStarted(); var client = new WebClient(); var timer = new Timer((arg) => { client.CancelAsync(); Updated(false); }, null, settings.RuleUpdateTimeout * 1000, Timeout.Infinite); //client.Proxy = null; client.DownloadStringCompleted += (sender, e) => { timer.Dispose(); if (e.Error != null) { Updated(false); } else { File.WriteAllText(App.AppDataDirectory + settings.ConfigsFolderName + settings.OnlineRulesFileName, e.Result); Operation.GrantAccessControl(App.AppDataDirectory + settings.ConfigsFolderName + settings.OnlineRulesFileName); settings.OnlineRulesLastUpdateTime = DateTime.Now; Updated(true); } updating = false; }; client.DownloadStringAsync(new Uri(settings.OnlineRulesUrl)); }
public static void GenerateConfigFile() { /* !DEBUG CODE * return; * //*/ //var defaultProxy = Operation.Proxies.DefaultProxy; var text = "listen-address " + (settings.ListenToLocalOnly ? "127.0.0.1:" : ":") + settings.ProxyPort + "\r\n" + "forwarded-connect-retries " + settings.ForwardConnectionRetries + "\r\n" + "forward / " + (settings.UseIntranetProxy ? (String.IsNullOrEmpty(settings.IntranetProxyServer) ? "127.0.0.1" : settings.IntranetProxyServer) + ":" + settings.IntranetProxyPort : ".") + "\r\n" + "keep-alive-timeout " + settings.PrivoxyKeepAliveTimeout + "\r\n" + "actionsfile " + App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyOnlineForwardActionFileName + "\r\n" + "actionsfile " + App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyOnlineDefaultActionFileName + "\r\n" + "actionsfile " + App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyCustomForwardActionFileName + "\r\n" + "actionsfile " + App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyCustomDefaultActionFileName + "\r\n" + "templdir " + App.AppDataDirectory + settings.ResourcesFolderName + settings.PrivoxyTemplatesFolderName + "\r\n"; File.WriteAllText(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyConfigFileName, text); Operation.GrantAccessControl(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyConfigFileName); }
public static void GenerateActionFile() { /* !DEBUG CODE * return; * //*/ if (generatingActionFile) { return; } generatingActionFile = true; new Action(() => { string forwardSettings; switch (settings.ProxyType) { case "GA": forwardSettings = "forward 127.0.0.1:" + settings.GaPort; break; case "SSH": forwardSettings = "forward-socks5 127.0.0.1:" + settings.SshSocksPort + " ."; break; case "HTTP": forwardSettings = "forward " + (settings.HttpServer != "" ? settings.HttpServer + ":" : "127.0.0.1:") + settings.HttpPort; break; case "SOCKS5": forwardSettings = "forward-socks5 " + (settings.SocksServer != "" ? settings.SocksServer + ":" : "127.0.0.1:") + settings.SocksPort + " ."; break; default: forwardSettings = ""; break; } //var defaultProxy = Operation.Proxies.DefaultProxy; var defaultForwardSettings = "forward " + (settings.UseIntranetProxy ? (String.IsNullOrEmpty(settings.IntranetProxyServer) ? "127.0.0.1" : settings.IntranetProxyServer) + ":" + settings.IntranetProxyPort : "."); string onlineForwardText = ""; string onlineDefaultText = ""; string customForwardText = ""; string customDefaultText = ""; if (enabled) { if (settings.ForwardAll) { onlineForwardText = "# Forward all\r\n" + "{+forward-override{" + forwardSettings + "}}" + "\r\n" + "/"; } else { if (settings.UseOnlineRules && File.Exists(App.AppDataDirectory + settings.ConfigsFolderName + settings.OnlineRulesFileName)) { var onlineRulesText = File.ReadAllText(App.AppDataDirectory + settings.ConfigsFolderName + settings.OnlineRulesFileName); var parts = onlineRulesText.Split(new string[] { "#-- separator --#" }, StringSplitOptions.None); if (parts.Length == 2) { onlineForwardText = parts[0].Trim().Replace("$forward-settings$", forwardSettings); onlineDefaultText = parts[1].Trim().Replace("$default-forward-settings$", defaultForwardSettings); } } var matches = new Regex(@".+").Matches(settings.CustomRules); var forwardRules = new List <string>(); var doNotForwardRules = new List <string>(); foreach (Match match in matches) { if (match.Value.StartsWith("!")) { doNotForwardRules.Add(match.Value.Substring(1)); } else { forwardRules.Add(match.Value); } } if (forwardRules.Count > 0) { customForwardText = "{+forward-override{" + forwardSettings + "}}" + "\r\n" + String.Join("\r\n", forwardRules.ToArray()); } if (doNotForwardRules.Count > 0) { customDefaultText = "{+forward-override{" + defaultForwardSettings + "}}" + "\r\n" + String.Join("\r\n", doNotForwardRules.ToArray()); } } } File.WriteAllText(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyOnlineForwardActionFileName, onlineForwardText); Operation.GrantAccessControl(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyOnlineForwardActionFileName); File.WriteAllText(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyOnlineDefaultActionFileName, onlineDefaultText); Operation.GrantAccessControl(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyOnlineDefaultActionFileName); File.WriteAllText(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyCustomForwardActionFileName, customForwardText); Operation.GrantAccessControl(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyCustomForwardActionFileName); File.WriteAllText(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyCustomDefaultActionFileName, customDefaultText); Operation.GrantAccessControl(App.AppDataDirectory + settings.ConfigsFolderName + settings.PrivoxyCustomDefaultActionFileName); generatingActionFile = false; }).BeginInvoke(null, null); }
static void updateNewRuleSubmitToggleFile() { File.WriteAllText(App.AppDataDirectory + settings.ConfigsFolderName + settings.SubmitNewRuleToggleFileName, settings.SubmitNewRule.ToString().ToLower()); Operation.GrantAccessControl(App.AppDataDirectory + settings.ConfigsFolderName + settings.SubmitNewRuleToggleFileName); }
void downloadUpdate(bool fullVersion = false) { if (downloadingUpdate) { return; } var version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); if (!fullVersion && version == onlineVersionStr) { var result = MessageBox.Show(resources["SameVersionMessage"] as string, resources["XWallTitle"] as string, MessageBoxButton.OKCancel); if (result == MessageBoxResult.Cancel) { return; } } if (updateDownloaded) { startUpdateInstalling(); } else { downloadingUpdate = true; downloadUpdateButton.IsEnabled = false; var url = new Uri(Directory.Exists(App.AppDataDirectory + settings.GaFolderName) || fullVersion ? settings.UpdateFullInstallerUrl : settings.UpdateInstallerUrl); var client = new WebClient(); //client.Proxy = null; client.DownloadFileAsync(url, App.AppDataDirectory + settings.ResourcesFolderName + settings.UpdateInstallerName); client.DownloadProgressChanged += (sender, e) => { Dispatcher.BeginInvoke(new Action(() => { onlineVersionTextBlock.Text = String.Format(resources["Downloading"] as string, e.ProgressPercentage); })); }; client.DownloadFileCompleted += (sender, e) => { Dispatcher.BeginInvoke(new Action(() => { Operation.GrantAccessControl(App.AppDataDirectory + settings.ResourcesFolderName + settings.UpdateInstallerName); downloadingUpdate = false; downloadUpdateButton.IsEnabled = true; onlineVersionTextBlock.Text = resources["Version"] as string + " " + onlineVersionStr; if (e.Error == null) { updateDownloaded = true; startUpdateInstalling(); } else { MessageBox.Show(resources["DownloadUpdateFailed"] as string); } })); }; onlineVersionTextBlock.Text = String.Format(resources["Downloading"] as string, 0); } }