コード例 #1
0
ファイル: GoAgent.cs プロジェクト: dospkgj/x-wall
        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);
        }
コード例 #2
0
ファイル: Rules.cs プロジェクト: dospkgj/x-wall
            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));
            }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: Rules.cs プロジェクト: dospkgj/x-wall
        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);
        }
コード例 #5
0
ファイル: Rules.cs プロジェクト: dospkgj/x-wall
 static void updateNewRuleSubmitToggleFile()
 {
     File.WriteAllText(App.AppDataDirectory + settings.ConfigsFolderName + settings.SubmitNewRuleToggleFileName, settings.SubmitNewRule.ToString().ToLower());
     Operation.GrantAccessControl(App.AppDataDirectory + settings.ConfigsFolderName + settings.SubmitNewRuleToggleFileName);
 }
コード例 #6
0
ファイル: MainWindow.xaml.cs プロジェクト: coolinc/XWall
        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);
            }
        }