@@ -1,3 +1,9 @@ | |||||
2.5.8 2015-09-20 | |||||
- Update GFWList url | |||||
2.5.7 2015-09-19 | |||||
- Fix repeated IV | |||||
2.5.6 2015-08-19 | 2.5.6 2015-08-19 | ||||
- Add portable mode. Create shadowsocks_portable_mode.txt to use it | - Add portable mode. Create shadowsocks_portable_mode.txt to use it | ||||
- Support server reorder | - Support server reorder | ||||
@@ -75,8 +75,8 @@ Visual Studio 2015 is required. | |||||
GPLv3 | GPLv3 | ||||
[Appveyor]: https://ci.appveyor.com/project/clowwindy/shadowsocks-csharp | |||||
[Build Status]: https://ci.appveyor.com/api/projects/status/gknc8l1lxy423ehv/branch/master | |||||
[Appveyor]: https://ci.appveyor.com/project/icylogic/shadowsocks-windows-l9mwe | |||||
[Build Status]: https://ci.appveyor.com/api/projects/status/ytllr9yjkbpc2tu2/branch/master | |||||
[latest release]: https://github.com/shadowsocks/shadowsocks-csharp/releases | [latest release]: https://github.com/shadowsocks/shadowsocks-csharp/releases | ||||
[GFWList]: https://github.com/gfwlist/gfwlist | [GFWList]: https://github.com/gfwlist/gfwlist | ||||
[Servers]: https://github.com/shadowsocks/shadowsocks/wiki/Ports-and-Clients#linux--server-side | [Servers]: https://github.com/shadowsocks/shadowsocks/wiki/Ports-and-Clients#linux--server-side | ||||
@@ -12,7 +12,7 @@ namespace Shadowsocks.Controller | |||||
{ | { | ||||
public class GFWListUpdater | public class GFWListUpdater | ||||
{ | { | ||||
private const string GFWLIST_URL = "https://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt"; | |||||
private const string GFWLIST_URL = "https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"; | |||||
private static string PAC_FILE = PACServer.PAC_FILE; | private static string PAC_FILE = PACServer.PAC_FILE; | ||||
@@ -97,4 +97,4 @@ namespace Shadowsocks.Controller | |||||
return valid_lines; | return valid_lines; | ||||
} | } | ||||
} | } | ||||
} | |||||
} |
@@ -18,7 +18,7 @@ namespace Shadowsocks.Controller | |||||
public string LatestVersionURL; | public string LatestVersionURL; | ||||
public event EventHandler NewVersionFound; | public event EventHandler NewVersionFound; | ||||
public const string Version = "2.5.6"; | |||||
public const string Version = "2.5.8"; | |||||
public void CheckUpdate(Configuration config) | public void CheckUpdate(Configuration config) | ||||
{ | { | ||||
@@ -88,7 +88,8 @@ namespace Shadowsocks.Encryption | |||||
protected static void randBytes(byte[] buf, int length) | protected static void randBytes(byte[] buf, int length) | ||||
{ | { | ||||
byte[] temp = new byte[length]; | byte[] temp = new byte[length]; | ||||
new Random().NextBytes(temp); | |||||
RNGCryptoServiceProvider rngServiceProvider = new RNGCryptoServiceProvider(); | |||||
rngServiceProvider.GetBytes(temp); | |||||
temp.CopyTo(buf, 0); | temp.CopyTo(buf, 0); | ||||
} | } | ||||
@@ -146,6 +146,28 @@ namespace Shadowsocks.View | |||||
} | } | ||||
private void ConfigForm_KeyDown(object sender, KeyEventArgs e) | |||||
{ | |||||
// Sometimes the users may hit enter key by mistake, and the form will close without saving entries. | |||||
if (e.KeyCode == Keys.Enter) | |||||
{ | |||||
Server server = controller.GetCurrentServer(); | |||||
if (!SaveOldSelectedServer()) | |||||
{ | |||||
return; | |||||
} | |||||
if (_modifiedConfiguration.configs.Count == 0) | |||||
{ | |||||
MessageBox.Show(I18N.GetString("Please add at least one server")); | |||||
return; | |||||
} | |||||
controller.SaveServers(_modifiedConfiguration.configs, _modifiedConfiguration.localPort); | |||||
controller.SelectServerIndex(_modifiedConfiguration.configs.IndexOf(server)); | |||||
} | |||||
} | |||||
private void ServersListBox_SelectedIndexChanged(object sender, EventArgs e) | private void ServersListBox_SelectedIndexChanged(object sender, EventArgs e) | ||||
{ | { | ||||
if (!ServersListBox.CanSelect) | if (!ServersListBox.CanSelect) | ||||