Browse Source

Replace treewide polipo with privoxy

Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
tags/3.3.2
Syrone Wong 8 years ago
parent
commit
4bd9fd8a6b
4 changed files with 24 additions and 24 deletions
  1. +13
    -13
      shadowsocks-csharp/Controller/Service/PrivoxyRunner.cs
  2. +9
    -9
      shadowsocks-csharp/Controller/ShadowsocksController.cs
  3. +1
    -1
      shadowsocks-csharp/Data/privoxy_conf.txt
  4. +1
    -1
      shadowsocks-csharp/shadowsocks-csharp.csproj

shadowsocks-csharp/Controller/Service/PolipoRunner.cs → shadowsocks-csharp/Controller/Service/PrivoxyRunner.cs View File

@@ -16,21 +16,21 @@ using Shadowsocks.Util.ProcessManagement;
namespace Shadowsocks.Controller namespace Shadowsocks.Controller
{ {
class PolipoRunner
class PrivoxyRunner
{ {
private static int Uid; private static int Uid;
private static string UniqueConfigFile; private static string UniqueConfigFile;
private static Job PolipoJob;
private static Job PrivoxyJob;
private Process _process; private Process _process;
private int _runningPort; private int _runningPort;
static PolipoRunner()
static PrivoxyRunner()
{ {
try try
{ {
Uid = Application.StartupPath.GetHashCode(); // Currently we use ss's StartupPath to identify different polipo instance.
Uid = Application.StartupPath.GetHashCode(); // Currently we use ss's StartupPath to identify different Privoxy instance.
UniqueConfigFile = $"privoxy_{Uid}.conf"; UniqueConfigFile = $"privoxy_{Uid}.conf";
PolipoJob = new Job();
PrivoxyJob = new Job();
FileManager.UncompressFile(Utils.GetTempPath("ss_privoxy.exe"), Resources.privoxy_exe); FileManager.UncompressFile(Utils.GetTempPath("ss_privoxy.exe"), Resources.privoxy_exe);
FileManager.UncompressFile(Utils.GetTempPath("mgwz.dll"), Resources.mgwz_dll); FileManager.UncompressFile(Utils.GetTempPath("mgwz.dll"), Resources.mgwz_dll);
@@ -54,17 +54,17 @@ namespace Shadowsocks.Controller
Server server = configuration.GetCurrentServer(); Server server = configuration.GetCurrentServer();
if (_process == null) if (_process == null)
{ {
Process[] existingPolipo = Process.GetProcessesByName("ss_privoxy");
foreach (Process p in existingPolipo.Where(IsChildProcess))
Process[] existingPrivoxy = Process.GetProcessesByName("ss_privoxy");
foreach (Process p in existingPrivoxy.Where(IsChildProcess))
{ {
KillProcess(p); KillProcess(p);
} }
string polipoConfig = Resources.privoxy_conf;
string privoxyConfig = Resources.privoxy_conf;
_runningPort = this.GetFreePort(); _runningPort = this.GetFreePort();
polipoConfig = polipoConfig.Replace("__SOCKS_PORT__", configuration.localPort.ToString());
polipoConfig = polipoConfig.Replace("__POLIPO_BIND_PORT__", _runningPort.ToString());
polipoConfig = polipoConfig.Replace("__POLIPO_BIND_IP__", configuration.shareOverLan ? "0.0.0.0" : "127.0.0.1");
FileManager.ByteArrayToFile(Utils.GetTempPath(UniqueConfigFile), Encoding.UTF8.GetBytes(polipoConfig));
privoxyConfig = privoxyConfig.Replace("__SOCKS_PORT__", configuration.localPort.ToString());
privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_PORT__", _runningPort.ToString());
privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_IP__", configuration.shareOverLan ? "0.0.0.0" : "127.0.0.1");
FileManager.ByteArrayToFile(Utils.GetTempPath(UniqueConfigFile), Encoding.UTF8.GetBytes(privoxyConfig));
_process = new Process(); _process = new Process();
// Configure the process using the StartInfo properties. // Configure the process using the StartInfo properties.
@@ -80,7 +80,7 @@ namespace Shadowsocks.Controller
* Add this process to job obj associated with this ss process, so that * Add this process to job obj associated with this ss process, so that
* when ss exit unexpectedly, this process will be forced killed by system. * when ss exit unexpectedly, this process will be forced killed by system.
*/ */
PolipoJob.AddProcess(_process.Handle);
PrivoxyJob.AddProcess(_process.Handle);
} }
RefreshTrayArea(); RefreshTrayArea();
} }

+ 9
- 9
shadowsocks-csharp/Controller/ShadowsocksController.cs View File

@@ -28,7 +28,7 @@ namespace Shadowsocks.Controller
private PACServer _pacServer; private PACServer _pacServer;
private Configuration _config; private Configuration _config;
private StrategyManager _strategyManager; private StrategyManager _strategyManager;
private PolipoRunner polipoRunner;
private PrivoxyRunner privoxyRunner;
private GFWListUpdater gfwListUpdater; private GFWListUpdater gfwListUpdater;
public AvailabilityStatistics availabilityStatistics = AvailabilityStatistics.Instance; public AvailabilityStatistics availabilityStatistics = AvailabilityStatistics.Instance;
public StatisticsStrategyConfiguration StatisticsConfiguration { get; private set; } public StatisticsStrategyConfiguration StatisticsConfiguration { get; private set; }
@@ -264,9 +264,9 @@ namespace Shadowsocks.Controller
{ {
_listener.Stop(); _listener.Stop();
} }
if (polipoRunner != null)
if (privoxyRunner != null)
{ {
polipoRunner.Stop();
privoxyRunner.Stop();
} }
if (_config.enabled) if (_config.enabled)
{ {
@@ -417,9 +417,9 @@ namespace Shadowsocks.Controller
_config = Configuration.Load(); _config = Configuration.Load();
StatisticsConfiguration = StatisticsStrategyConfiguration.Load(); StatisticsConfiguration = StatisticsStrategyConfiguration.Load();
if (polipoRunner == null)
if (privoxyRunner == null)
{ {
polipoRunner = new PolipoRunner();
privoxyRunner = new PrivoxyRunner();
} }
if (_pacServer == null) if (_pacServer == null)
{ {
@@ -441,11 +441,11 @@ namespace Shadowsocks.Controller
{ {
_listener.Stop(); _listener.Stop();
} }
// don't put polipoRunner.Start() before pacServer.Stop()
// don't put PrivoxyRunner.Start() before pacServer.Stop()
// or bind will fail when switching bind address from 0.0.0.0 to 127.0.0.1 // or bind will fail when switching bind address from 0.0.0.0 to 127.0.0.1
// though UseShellExecute is set to true now // though UseShellExecute is set to true now
// http://stackoverflow.com/questions/10235093/socket-doesnt-close-after-application-exits-if-a-launched-process-is-open // http://stackoverflow.com/questions/10235093/socket-doesnt-close-after-application-exits-if-a-launched-process-is-open
polipoRunner.Stop();
privoxyRunner.Stop();
try try
{ {
var strategy = GetCurrentStrategy(); var strategy = GetCurrentStrategy();
@@ -454,7 +454,7 @@ namespace Shadowsocks.Controller
strategy.ReloadServers(); strategy.ReloadServers();
} }
polipoRunner.Start(_config);
privoxyRunner.Start(_config);
TCPRelay tcpRelay = new TCPRelay(this, _config); TCPRelay tcpRelay = new TCPRelay(this, _config);
UDPRelay udpRelay = new UDPRelay(this); UDPRelay udpRelay = new UDPRelay(this);
@@ -462,7 +462,7 @@ namespace Shadowsocks.Controller
services.Add(tcpRelay); services.Add(tcpRelay);
services.Add(udpRelay); services.Add(udpRelay);
services.Add(_pacServer); services.Add(_pacServer);
services.Add(new PortForwarder(polipoRunner.RunningPort));
services.Add(new PortForwarder(privoxyRunner.RunningPort));
_listener = new Listener(services); _listener = new Listener(services);
_listener.Start(_config); _listener.Start(_config);
} }


+ 1
- 1
shadowsocks-csharp/Data/privoxy_conf.txt View File

@@ -1,4 +1,4 @@
listen-address __POLIPO_BIND_IP__:__POLIPO_BIND_PORT__
listen-address __PRIVOXY_BIND_IP__:__PRIVOXY_BIND_PORT__
show-on-task-bar 0 show-on-task-bar 0
activity-animation 0 activity-animation 0
forward-socks5 / 127.0.0.1:__SOCKS_PORT__ . forward-socks5 / 127.0.0.1:__SOCKS_PORT__ .


+ 1
- 1
shadowsocks-csharp/shadowsocks-csharp.csproj View File

@@ -198,7 +198,7 @@
<DependentUpon>ConfigForm.cs</DependentUpon> <DependentUpon>ConfigForm.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Controller\Service\TCPRelay.cs" /> <Compile Include="Controller\Service\TCPRelay.cs" />
<Compile Include="Controller\Service\PolipoRunner.cs" />
<Compile Include="Controller\Service\PrivoxyRunner.cs" />
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Controller\ShadowsocksController.cs" /> <Compile Include="Controller\ShadowsocksController.cs" />


Loading…
Cancel
Save