예제 #1
0
            private static void ModifyHostFile(PSO2ProxyConfiguration config)
            {
                bool   needWrite       = false;
                bool   installMode     = config is PSO2ProxyConfiguration;
                string _ipAdressString = string.Empty;

                System.Net.IPAddress _ipAdress;
                if (installMode)
                {
                    if (Leayal.UriHelper.GetResolvedConnecionIPAddress(config.Host, out _ipAdress))
                    {
                        _ipAdressString = _ipAdress.ToString();
                    }
                    else
                    {
                        _ipAdressString = config.Host;
                    }
                }
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                string hostFilePath          = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.System), "drivers", "etc", "hosts");

                if (System.IO.File.Exists(hostFilePath))
                {
                    string linebuffer;
                    using (System.IO.StreamReader sr = new System.IO.StreamReader(hostFilePath))
                        while (!sr.EndOfStream)
                        {
                            linebuffer = sr.ReadLine();
                            if (!string.IsNullOrWhiteSpace(linebuffer))
                            {
                                if (linebuffer.IndexOf("pso2gs.net") == -1)
                                {
                                    sb.AppendLine(linebuffer);
                                }
                                else
                                {
                                    needWrite = true;
                                }
                            }
                            else
                            {
                                sb.AppendLine(linebuffer);
                            }
                        }
                }
                if (needWrite)
                {
                    System.IO.File.WriteAllText(hostFilePath, sb.ToString());
                }
                sb.Clear();
                //config
            }
예제 #2
0
 public void Install(PSO2ProxyConfiguration config)
 {
     PSO2Proxy.Install(RequiredPluginList, IncompatiblePluginList, config);
 }
예제 #3
0
            internal static void Install(string[] requiredPlugins, string[] incompatiblePlugins, PSO2ProxyConfiguration config)
            {
                ModifyHostFile();
                Components.WebClientManger.WebClientPool.GetWebClient(config.PublickeyURL).DownloadFile(config.PublickeyURL, Infos.CommonMethods.PathConcat(MySettings.PSO2Dir, publickeyFilename));
                string _ipAdressString = config.Host;

                System.Net.IPAddress _ipAdress;
                if (Leayal.UriHelper.GetResolvedConnecionIPAddress(config.Host, out _ipAdress))
                {
                    _ipAdressString = _ipAdress.ToString();
                }
                System.IO.File.WriteAllText(Infos.CommonMethods.PathConcat(MySettings.PSO2Dir, proxyConfigFile), _ipAdressString);
                PSO2Plugin.PSO2Plugin plugin;
                if (incompatiblePlugins != null && incompatiblePlugins.Length > 0)
                {
                    for (int i = 0; i < incompatiblePlugins.Length; i++)
                    {
                        plugin = PSO2Plugin.PSO2PluginManager.Instance[incompatiblePlugins[i]];
                        if (plugin != null)
                        {
                            plugin.Enabled = false;
                        }
                    }
                }
                if (requiredPlugins != null && requiredPlugins.Length > 0)
                {
                    for (int i = 0; i < requiredPlugins.Length; i++)
                    {
                        plugin = PSO2Plugin.PSO2PluginManager.Instance[requiredPlugins[i]];
                        if (plugin != null)
                        {
                            plugin.Enabled = true;
                        }
                    }
                }
                plugin = null;
            }