Browse Source

add global mode

tags/2.3
clowwindy 9 years ago
parent
commit
5ed49ac6b6
4 changed files with 101 additions and 35 deletions
  1. +13
    -1
      shadowsocks-csharp/Controller/ShadowsocksController.cs
  2. +13
    -4
      shadowsocks-csharp/Controller/SystemProxy.cs
  3. +1
    -0
      shadowsocks-csharp/Model/Configuration.cs
  4. +74
    -30
      shadowsocks-csharp/View/MenuViewController.cs

+ 13
- 1
shadowsocks-csharp/Controller/ShadowsocksController.cs View File

@@ -31,6 +31,7 @@ namespace Shadowsocks.Controller
public event EventHandler ConfigChanged;
public event EventHandler EnableStatusChanged;
public event EventHandler EnableGlobalChanged;
public event EventHandler ShareOverLANStatusChanged;
// when user clicked Edit PAC, and PAC file has already created
@@ -93,6 +94,17 @@ namespace Shadowsocks.Controller
}
}
public void ToggleGlobal(bool global)
{
_config.global = global;
UpdateSystemProxy();
SaveConfig(_config);
if (EnableGlobalChanged != null)
{
EnableGlobalChanged(this, new EventArgs());
}
}
public void ToggleShareOverLAN(bool enabled)
{
_config.shareOverLan = enabled;
@@ -175,7 +187,7 @@ namespace Shadowsocks.Controller
{
if (_config.enabled)
{
SystemProxy.Enable();
SystemProxy.Enable(_config.global);
_systemProxyIsDirty = true;
}
else


+ 13
- 4
shadowsocks-csharp/Controller/SystemProxy.cs View File

@@ -24,16 +24,25 @@ namespace Shadowsocks.Controller
_refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
}
public static void Enable()
public static void Enable(bool global)
{
try
{
RegistryKey registry =
Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
true);
registry.SetValue("ProxyEnable", 0);
registry.SetValue("ProxyServer", "");
registry.SetValue("AutoConfigURL", "http://127.0.0.1:8093/pac?t=" + GetTimestamp(DateTime.Now));
if (global)
{
registry.SetValue("ProxyEnable", 1);
registry.SetValue("ProxyServer", "127.0.0.1:8123");
registry.SetValue("AutoConfigURL", "");
}
else
{
registry.SetValue("ProxyEnable", 0);
registry.SetValue("ProxyServer", "");
registry.SetValue("AutoConfigURL", "http://127.0.0.1:8093/pac?t=" + GetTimestamp(DateTime.Now));
}
SystemProxy.NotifyIE();
//Must Notify IE first, or the connections do not chanage
CopyProxySettingFromLan();


+ 1
- 0
shadowsocks-csharp/Model/Configuration.cs View File

@@ -11,6 +11,7 @@ namespace Shadowsocks.Model
{
public List<Server> configs;
public int index;
public bool global;
public bool enabled;
public bool shareOverLan;
public bool isDefault;


+ 74
- 30
shadowsocks-csharp/View/MenuViewController.cs View File

@@ -37,6 +37,9 @@ namespace Shadowsocks.View
private MenuItem menuItem3;
private MenuItem quitItem;
private MenuItem menuItem1;
private MenuItem modeItem;
private MenuItem globalModeItem;
private MenuItem PACModeItem;
private ConfigForm configForm;
public MenuViewController(ShadowsocksController controller)
@@ -49,6 +52,7 @@ namespace Shadowsocks.View
controller.ConfigChanged += controller_ConfigChanged;
controller.PACFileReadyToOpen += controller_PACFileReadyToOpen;
controller.ShareOverLANStatusChanged += controller_ShareOverLANStatusChanged;
controller.EnableGlobalChanged += controller_EnableGlobalChanged;
this.updateChecker = new UpdateChecker();
updateChecker.NewVersionFound += updateChecker_NewVersionFound;
@@ -98,6 +102,9 @@ namespace Shadowsocks.View
{
this.contextMenu1 = new System.Windows.Forms.ContextMenu();
this.enableItem = new System.Windows.Forms.MenuItem();
this.modeItem = new System.Windows.Forms.MenuItem();
this.PACModeItem = new System.Windows.Forms.MenuItem();
this.globalModeItem = new System.Windows.Forms.MenuItem();
this.AutoStartupItem = new System.Windows.Forms.MenuItem();
this.ShareOverLANItem = new System.Windows.Forms.MenuItem();
this.ServersItem = new System.Windows.Forms.MenuItem();
@@ -117,6 +124,7 @@ namespace Shadowsocks.View
//
this.contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.enableItem,
this.modeItem,
this.ServersItem,
this.menuItem1,
this.AutoStartupItem,
@@ -134,22 +142,30 @@ namespace Shadowsocks.View
this.enableItem.Index = 0;
this.enableItem.Text = "&Enable";
this.enableItem.Click += new System.EventHandler(this.EnableItem_Click);
//
// AutoStartupItem
//
this.AutoStartupItem.Index = 3;
this.AutoStartupItem.Text = "Start on Boot";
this.AutoStartupItem.Click += new System.EventHandler(this.AutoStartupItem_Click);
//
// ShareOverLANItem
//
this.ShareOverLANItem.Index = 4;
this.ShareOverLANItem.Text = "Share over LAN";
this.ShareOverLANItem.Click += new System.EventHandler(this.ShareOverLANItem_Click);
//
// modeMenu
//
this.modeItem.Index = 1;
this.modeItem.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.PACModeItem,
this.globalModeItem});
this.modeItem.Text = "Mode";
//
// PACModeItem
//
this.PACModeItem.Index = 0;
this.PACModeItem.Text = "PAC";
this.PACModeItem.Click += new System.EventHandler(this.PACModeItem_Click);
//
// globalModeItem
//
this.globalModeItem.Index = 1;
this.globalModeItem.Text = "Global";
this.globalModeItem.Click += new System.EventHandler(this.GlobalModeItem_Click);
//
// ServersItem
//
this.ServersItem.Index = 1;
this.ServersItem.Index = 2;
this.ServersItem.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.SeperatorItem,
this.ConfigItem});
@@ -166,50 +182,62 @@ namespace Shadowsocks.View
this.ConfigItem.Text = "Edit Servers...";
this.ConfigItem.Click += new System.EventHandler(this.Config_Click);
//
// menuItem4
// menuItem1
//
this.menuItem4.Index = 6;
this.menuItem4.Text = "-";
this.menuItem1.Index = 3;
this.menuItem1.Text = "-";
//
// AutoStartupItem
//
this.AutoStartupItem.Index = 4;
this.AutoStartupItem.Text = "Start on Boot";
this.AutoStartupItem.Click += new System.EventHandler(this.AutoStartupItem_Click);
//
// ShareOverLANItem
//
this.ShareOverLANItem.Index = 5;
this.ShareOverLANItem.Text = "Share over LAN";
this.ShareOverLANItem.Click += new System.EventHandler(this.ShareOverLANItem_Click);
//
// editPACFileItem
//
this.editPACFileItem.Index = 5;
this.editPACFileItem.Index = 6;
this.editPACFileItem.Text = "Edit &PAC File...";
this.editPACFileItem.Click += new System.EventHandler(this.EditPACFileItem_Click);
//
// menuItem4
//
this.menuItem4.Index = 7;
this.menuItem4.Text = "-";
//
// QRCodeItem
//
this.QRCodeItem.Index = 7;
this.QRCodeItem.Index = 8;
this.QRCodeItem.Text = "Show &QRCode...";
this.QRCodeItem.Click += new System.EventHandler(this.QRCodeItem_Click);
//
// ShowLogItem
//
this.ShowLogItem.Index = 8;
this.ShowLogItem.Index = 9;
this.ShowLogItem.Text = "Show Logs...";
this.ShowLogItem.Click += new System.EventHandler(this.ShowLogItem_Click);
//
// aboutItem
//
this.aboutItem.Index = 9;
this.aboutItem.Index = 10;
this.aboutItem.Text = "About...";
this.aboutItem.Click += new System.EventHandler(this.AboutItem_Click);
//
// menuItem3
//
this.menuItem3.Index = 10;
this.menuItem3.Index = 11;
this.menuItem3.Text = "-";
//
// quitItem
//
this.quitItem.Index = 11;
this.quitItem.Index = 12;
this.quitItem.Text = "&Quit";
this.quitItem.Click += new System.EventHandler(this.Quit_Click);
//
// menuItem1
//
this.menuItem1.Index = 2;
this.menuItem1.Text = "-";
}
private void controller_ConfigChanged(object sender, EventArgs e)
@@ -227,6 +255,12 @@ namespace Shadowsocks.View
ShareOverLANItem.Checked = controller.GetConfiguration().shareOverLan;
}
void controller_EnableGlobalChanged(object sender, EventArgs e)
{
globalModeItem.Checked = controller.GetConfiguration().global;
PACModeItem.Checked = !globalModeItem.Checked;
}
void controller_PACFileReadyToOpen(object sender, ShadowsocksController.PathEventArgs e)
{
string argument = @"/select, " + e.Path;
@@ -255,6 +289,8 @@ namespace Shadowsocks.View
Configuration config = controller.GetConfiguration();
UpdateServersMenu();
enableItem.Checked = config.enabled;
globalModeItem.Checked = config.global;
PACModeItem.Checked = !config.global;
ShareOverLANItem.Checked = config.shareOverLan;
AutoStartupItem.Checked = AutoStartup.Check();
}
@@ -338,11 +374,19 @@ namespace Shadowsocks.View
ShowConfigForm();
}
private void EnableItem_Click(object sender, EventArgs e)
{
enableItem.Checked = !enableItem.Checked;
controller.ToggleEnable(enableItem.Checked);
controller.ToggleEnable(!enableItem.Checked);
}
private void GlobalModeItem_Click(object sender, EventArgs e)
{
controller.ToggleGlobal(true);
}
private void PACModeItem_Click(object sender, EventArgs e)
{
controller.ToggleGlobal(false);
}
private void ShareOverLANItem_Click(object sender, EventArgs e)


Loading…
Cancel
Save