public ServerLogForm(ShadowsocksController controller) { this.controller = controller; this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); InitializeComponent(); this.Width = 760; Configuration config = controller.GetCurrentConfiguration(); if (config.configs.Count < 8) { this.Height = 300; } else if (config.configs.Count < 20) { this.Height = 300 + (config.configs.Count - 8) * 16; } else { this.Height = 500; } UpdateTexts(); UpdateLog(); this.contextMenu1 = new ContextMenu(new MenuItem[] { this.clearItem = CreateMenuItem("&Clear", new EventHandler(this.ClearItem_Click)), }); ServerDataGrid.ContextMenu = contextMenu1; controller.ConfigChanged += controller_ConfigChanged; }
public StrategyManager(ShadowsocksController controller) { _strategies = new List<IStrategy>(); _strategies.Add(new BalancingStrategy(controller)); _strategies.Add(new HighAvailabilityStrategy(controller)); // TODO: load DLL plugins }
public PingForm(ShadowsocksController sc) { InitializeComponent(); var qqwryPath = Environment.CurrentDirectory + "\\qqwry.dat"; if (Util.Utils.qqwry == null && File.Exists(qqwryPath)) Util.Utils.qqwry = new QQWry(qqwryPath); controller = sc; Font = Util.Utils.GetFont(); PerformLayout(); UpdateTexts(); Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); LoadConfiguration(controller.GetConfiguration()); if (dgvMain.Rows.Count <= 5) { foreach (var row in dgvMain.Rows) { var t = new Thread(Ping) { IsBackground = true }; t.Start(row); } } else { ChangeStatus(I18N.GetString("DoSomething")); var t = new Thread(Go) { IsBackground = true }; t.Start(dgvMain.Rows); } }
public MenuViewController(ShadowsocksController controller) { this.controller = controller; LoadMenu(); controller.ConfigChanged += controller_ConfigChanged; controller.ShareOverLANStatusChanged += controller_ShareOverLANStatusChanged; controller.Errored += controller_Errored; _notifyIcon = new NotifyIcon(); UpdateTrayIcon(); _notifyIcon.Visible = true; _notifyIcon.ContextMenu = contextMenu1; _notifyIcon.MouseDoubleClick += notifyIcon1_DoubleClick; //this.updateChecker = new UpdateChecker(); //updateChecker.NewVersionFound += updateChecker_NewVersionFound; LoadCurrentConfiguration(); //updateChecker.CheckUpdate(controller.GetConfigurationCopy()); if (controller.GetConfigurationCopy().isDefault) { _isFirstRun = true; ShowConfigForm(); } }
public TCPRelay(ShadowsocksController controller, Configuration conf) { _controller = controller; _config = conf; Handlers = new HashSet<TCPHandler>(); _lastSweepTime = DateTime.Now; }
static void Main() { Util.Utils.ReleaseMemory(); using (Mutex mutex = new Mutex(false, "Global\\" + "71981632-A427-497F-AB91-241CD227EC1F")) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (!mutex.WaitOne(0, false)) { Process[] oldProcesses = Process.GetProcessesByName("Shadowsocks"); if (oldProcesses.Length > 0) { Process oldProcess = oldProcesses[0]; } MessageBox.Show("Shadowsocks is already running.\n\nFind Shadowsocks icon in your notify tray."); return; } Directory.SetCurrentDirectory(Application.StartupPath); #if !DEBUG Logging.OpenLogFile(); #endif ShadowsocksController controller = new ShadowsocksController(); MenuViewController viewController = new MenuViewController(controller); controller.Start(); Application.Run(); } }
public MenuViewController(ShadowsocksController controller) { LoadMenu(); LoadTrayIcon(); this.controller = controller; controller.EnableStatusChanged += controller_EnableStatusChanged; controller.ConfigChanged += controller_ConfigChanged; controller.PACFileReadyToOpen += controller_PACFileReadyToOpen; controller.ShareOverLANStatusChanged += controller_ShareOverLANStatusChanged; controller.EnableGlobalChanged += controller_EnableGlobalChanged; controller.Errored += controller_Errored; this.updateChecker = new UpdateChecker(); updateChecker.NewVersionFound += updateChecker_NewVersionFound; LoadCurrentConfiguration(); updateChecker.CheckUpdate(); if (controller.GetConfiguration().isDefault) { _isFirstRun = true; ShowConfigForm(); } }
public LogForm(ShadowsocksController controller, string filename) { this.controller = controller; this.filename = filename; InitializeComponent(); Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); LogViewerConfig config = controller.GetConfigurationCopy().logViewer; if (config == null) { config = new LogViewerConfig(); } else { topMostTrigger = config.topMost; wrapTextTrigger = config.wrapText; toolbarTrigger = config.toolbarShown; LogMessageTextBox.BackColor = config.GetBackgroundColor(); LogMessageTextBox.ForeColor = config.GetTextColor(); LogMessageTextBox.Font = config.GetFont(); } controller.TrafficChanged += controller_TrafficChanged; UpdateTexts(); }
public MenuViewController(ShadowsocksController controller) { this.controller = controller; LoadMenu(); controller.EnableStatusChanged += controller_EnableStatusChanged; controller.ConfigChanged += controller_ConfigChanged; controller.PACFileReadyToOpen += controller_FileReadyToOpen; controller.UserRuleFileReadyToOpen += controller_FileReadyToOpen; controller.ShareOverLANStatusChanged += controller_ShareOverLANStatusChanged; controller.EnableGlobalChanged += controller_EnableGlobalChanged; controller.Errored += controller_Errored; controller.UpdatePACFromGFWListCompleted += controller_UpdatePACFromGFWListCompleted; controller.UpdatePACFromGFWListError += controller_UpdatePACFromGFWListError; _notifyIcon = new NotifyIcon(); UpdateTrayIcon(); _notifyIcon.Visible = true; _notifyIcon.ContextMenu = contextMenu1; _notifyIcon.MouseDoubleClick += notifyIcon1_DoubleClick; this.updateChecker = new UpdateChecker(); updateChecker.NewVersionFound += updateChecker_NewVersionFound; LoadCurrentConfiguration(); updateChecker.CheckUpdate(controller.GetConfigurationCopy()); if (controller.GetConfigurationCopy().isDefault) { _isFirstRun = true; ShowConfigForm(); } }
static void Main() { Util.Utils.ReleaseMemory(); using (Mutex mutex = new Mutex(false, "Global\\ShadowsocksR_" + Application.StartupPath.GetHashCode())) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (!mutex.WaitOne(0, false)) { MessageBox.Show(I18N.GetString("Find Shadowsocks icon in your notify tray.") + "\n" + I18N.GetString("If you want to start multiple Shadowsocks, make a copy in another directory."), I18N.GetString("ShadowsocksR is already running.")); return; } Directory.SetCurrentDirectory(Application.StartupPath); //#if !DEBUG Logging.OpenLogFile(); //#endif ShadowsocksController controller = new ShadowsocksController(); MenuViewController viewController = new MenuViewController(controller); controller.Start(); Application.Run(); } }
private static void Application_ApplicationExit(object sender, EventArgs e) { if (_controller != null) { _controller.Stop(); _controller = null; } }
public TCPHandler(ShadowsocksController controller, Configuration config, TCPRelay tcprelay, Socket socket) { this._controller = controller; this._config = config; this._tcprelay = tcprelay; this._connection = socket; lastActivity = DateTime.Now; }
public StatisticsStrategyConfigurationForm(ShadowsocksController controller) { if (controller == null) return; InitializeComponent(); _controller = controller; _controller.ConfigChanged += (sender, args) => LoadConfiguration(); LoadConfiguration(); Load += (sender, args) => InitData(); }
public ConfigForm(ShadowsocksController controller) { InitializeComponent(); UpdateTexts(); this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); this.controller = controller; controller.ConfigChanged += controller_ConfigChanged; LoadCurrentConfiguration(); }
public TCPHandler(ShadowsocksController controller, Configuration config, TCPRelay tcprelay, Socket socket) { _controller = controller; _config = config; _tcprelay = tcprelay; _connection = socket; _proxyTimeout = config.proxy.proxyTimeout * 1000; _serverTimeout = config.GetCurrentServer().timeout * 1000; lastActivity = DateTime.Now; }
private static void Application_ApplicationExit(object sender, EventArgs e) { // detach static event handlers Application.ApplicationExit -= Application_ApplicationExit; SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; Application.ThreadException -= Application_ThreadException; HotKeys.Destroy(); if (_controller != null) { _controller.Stop(); _controller = null; } }
public SettingsForm(ShadowsocksController controller) { this.Font = System.Drawing.SystemFonts.MessageBoxFont; InitializeComponent(); this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); this.controller = controller; UpdateTexts(); controller.ConfigChanged += controller_ConfigChanged; LoadCurrentConfiguration(); }
public ConfigForm(ShadowsocksController controller) { InitializeComponent(); this.Font = System.Drawing.SystemFonts.MessageBoxFont; this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); this._lastSelectedSsServerInfo = null; this._ssController = controller; controller.ConfigChanged += ssController_ConfigChanged; UpdateTexts(); LoadCurrentConfiguration(); }
public StatisticsStrategyConfigurationForm(ShadowsocksController controller) { if (controller == null) return; InitializeComponent(); _speedSeries = StatisticsChart.Series["Speed"]; _packageLossSeries = StatisticsChart.Series["Package Loss"]; _pingSeries = StatisticsChart.Series["Ping"]; _controller = controller; _controller.ConfigChanged += (sender, args) => LoadConfiguration(); LoadConfiguration(); Load += (sender, args) => InitData(); }
public ServerCrawler(ShadowsocksController controller) { this.controller = controller; configuration = controller.GetConfigurationCopy(); this.serverList = new List<Server>(); foreach (var server in configuration.configs) { if (server.remarks == CRAWLER_REMARKS) { this.serverList.Add(server); } } }
public HotkeySettingsForm(ShadowsocksController controller) { InitializeComponent(); UpdateTexts(); this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); _controller = controller; _controller.ConfigChanged += controller_ConfigChanged; LoadCurrentConfiguration(); // get all textboxes belong to this form _allTextBoxes = HotKeys.GetChildControls<TextBox>(this.tableLayoutPanel1); if (!_allTextBoxes.Any()) throw new Exception("Cannot get all textboxes"); }
static void Main() { // Check OS since we are using dual-mode socket if (!Utils.IsWinVistaOrHigher()) { MessageBox.Show(I18N.GetString("Unsupported operating system, use Windows Vista at least."), "Shadowsocks Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Utils.ReleaseMemory(true); using (Mutex mutex = new Mutex(false, "Global\\Shadowsocks_" + Application.StartupPath.GetHashCode())) { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (!mutex.WaitOne(0, false)) { Process[] oldProcesses = Process.GetProcessesByName("Shadowsocks"); if (oldProcesses.Length > 0) { Process oldProcess = oldProcesses[0]; } MessageBox.Show(I18N.GetString("Find Shadowsocks icon in your notify tray.") + "\n" + I18N.GetString("If you want to start multiple Shadowsocks, make a copy in another directory."), I18N.GetString("Shadowsocks is already running.")); return; } Directory.SetCurrentDirectory(Application.StartupPath); #if DEBUG Logging.OpenLogFile(); // truncate privoxy log file while debugging string privoxyLogFilename = Utils.GetTempPath("privoxy.log"); if (File.Exists(privoxyLogFilename)) using (new FileStream(privoxyLogFilename, FileMode.Truncate)) { } #else Logging.OpenLogFile(); #endif ShadowsocksController controller = new ShadowsocksController(); MenuViewController viewController = new MenuViewController(controller); controller.Start(); Application.Run(); } }
public ConfigForm(ShadowsocksController controller) { this.Font = System.Drawing.SystemFonts.MessageBoxFont; InitializeComponent(); // a dirty hack this.ServersListBox.Dock = System.Windows.Forms.DockStyle.Fill; this.PerformLayout(); UpdateTexts(); this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); this.controller = controller; controller.ConfigChanged += controller_ConfigChanged; LoadCurrentConfiguration(); }
public MenuViewController(ShadowsocksController controller) { this.controller = controller; LoadMenu(); controller.EnableStatusChanged += controller_EnableStatusChanged; controller.ConfigChanged += controller_ConfigChanged; controller.PACFileReadyToOpen += controller_FileReadyToOpen; controller.UserRuleFileReadyToOpen += controller_FileReadyToOpen; controller.ShareOverLANStatusChanged += controller_ShareOverLANStatusChanged; controller.VerboseLoggingStatusChanged += controller_VerboseLoggingStatusChanged; controller.EnableGlobalChanged += controller_EnableGlobalChanged; controller.Errored += controller_Errored; controller.UpdatePACFromGFWListCompleted += controller_UpdatePACFromGFWListCompleted; controller.UpdatePACFromGFWListError += controller_UpdatePACFromGFWListError; _notifyIcon = new NotifyIcon(); UpdateTrayIcon(); _notifyIcon.Visible = true; _notifyIcon.ContextMenu = contextMenu1; _notifyIcon.BalloonTipClicked += notifyIcon1_BalloonTipClicked; _notifyIcon.MouseClick += notifyIcon1_Click; _notifyIcon.MouseDoubleClick += notifyIcon1_DoubleClick; _notifyIcon.BalloonTipClosed += _notifyIcon_BalloonTipClosed; controller.TrafficChanged += controller_TrafficChanged; this.updateChecker = new UpdateChecker(); updateChecker.CheckUpdateCompleted += updateChecker_CheckUpdateCompleted; LoadCurrentConfiguration(); Configuration config = controller.GetConfigurationCopy(); if (config.isDefault) { _isFirstRun = true; ShowConfigForm(); } else if(config.autoCheckUpdate) { _isStartupChecking = true; updateChecker.CheckUpdate(config, 3000); } }
public frmMain(ShadowsocksController sc) { InitializeComponent(); //初始化QQWry var qqwryPath = Environment.CurrentDirectory + "\\qqwry.dat"; if (qqwry == null && File.Exists(qqwryPath)) qqwry = new QQWry(qqwryPath); controller = sc; #region i18N if (System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag.ToLowerInvariant().StartsWith("zh")) { Text = "Ping测试"; dgvMain.Columns[0].HeaderText = "地址"; dgvMain.Columns[1].HeaderText = "IP地址"; dgvMain.Columns[2].HeaderText = "备注"; dgvMain.Columns[3].HeaderText = "物理地址"; dgvMain.Columns[4].HeaderText = "最大Ping值"; dgvMain.Columns[5].HeaderText = "最小Ping值"; dgvMain.Columns[6].HeaderText = "平均Ping值"; dgvMain.Columns[7].HeaderText = "失败次数"; dgvMain.Columns[8].HeaderText = "下行速度"; dgvMain.Columns[9].HeaderText = "测速"; tssStatusLabel.Text = "当前状态:"; tssStatus.Text = "准备就绪"; } #endregion LoadConfiguration(controller.GetCurrentConfiguration()); if (dgvMain.Rows.Count <= 5) { foreach (var row in dgvMain.Rows) { var t = new Thread(Ping) { IsBackground = true }; t.Start(row); } } else { ChangeStatus("Busy..."); var t = new Thread(Go) { IsBackground = true }; t.Start(dgvMain.Rows); } }
public void Start(ShadowsocksController shadowsocksController, Configuration configuration) { if (_process == null) { Process[] existingPrivoxy = Process.GetProcessesByName("ss_privoxy"); foreach (Process p in existingPrivoxy.Where(IsChildProcess)) { KillProcess(p); } var server = shadowsocksController.GetCurrentServer(); string privoxyConfig = Resources.privoxy_conf; _runningPort = configuration.localPort; privoxyConfig = privoxyConfig.Replace("__SOCKS_PORT__", server.server_port.ToString()); privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_PORT__", _runningPort.ToString()); privoxyConfig = configuration.isIPv6Enabled ? privoxyConfig.Replace("__PRIVOXY_BIND_IP__", configuration.shareOverLan ? "[::]" : "[::1]") : privoxyConfig.Replace("__PRIVOXY_BIND_IP__", configuration.shareOverLan ? "0.0.0.0" : "127.0.0.1"); privoxyConfig = privoxyConfig.Replace("__SOCKS_HOST__", server.server); FileManager.ByteArrayToFile(Utils.GetTempPath(_uniqueConfigFile), Encoding.UTF8.GetBytes(privoxyConfig)); _process = new Process { // Configure the process using the StartInfo properties. StartInfo = { FileName = PrivoxyFileName, Arguments = _uniqueConfigFile, WorkingDirectory = Utils.GetTempPath(), WindowStyle = ProcessWindowStyle.Hidden, UseShellExecute = true, CreateNoWindow = true } }; _process.Start(); /* * 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. */ _privoxyJob.AddProcess(_process.Handle); } }
public ConfigForm(ShadowsocksController controller, UpdateChecker updateChecker) { this.Font = System.Drawing.SystemFonts.MessageBoxFont; InitializeComponent(); // a dirty hack //this.ServersListBox.Dock = System.Windows.Forms.DockStyle.Fill; //this.PerformLayout(); this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); this.controller = controller; this.updateChecker = updateChecker; if (updateChecker.LatestVersionURL == null) LinkUpdate.Visible = false; UpdateTexts(); controller.ConfigChanged += controller_ConfigChanged; LoadCurrentConfiguration(); }
public ConfigForm(ShadowsocksController controller, MenuViewController menu) { ComputerInfo info = new ComputerInfo(); MessageBox.Show("Availible Physical Memory" + Convert.ToDouble(info.AvailablePhysicalMemory)/(1024.0*1024.0*1024.0) + "GB"); this.Font = System.Drawing.SystemFonts.MessageBoxFont; InitializeComponent(); // a dirty hack this.ServersListBox.Dock = System.Windows.Forms.DockStyle.Fill; this.PerformLayout(); UpdateTexts(); this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon()); this.menu = menu; this.controller = controller; controller.ConfigChanged += controller_ConfigChanged; LoadCurrentConfiguration(); }
public MenuViewController(ShadowsocksController controller) { this.controller = controller; LoadMenu(); controller.EnableStatusChanged += controller_EnableStatusChanged; controller.ConfigChanged += controller_ConfigChanged; controller.PACFileReadyToOpen += controller_FileReadyToOpen; controller.UserRuleFileReadyToOpen += controller_FileReadyToOpen; controller.ShareOverLANStatusChanged += controller_ShareOverLANStatusChanged; controller.SelectRandomStatusChanged += controller_SelectRandomStatusChanged; controller.EnableGlobalChanged += controller_EnableGlobalChanged; controller.Errored += controller_Errored; controller.UpdatePACFromGFWListCompleted += controller_UpdatePACFromGFWListCompleted; controller.UpdatePACFromGFWListError += controller_UpdatePACFromGFWListError; controller.ShowConfigFormEvent += Config_Click; _notifyIcon = new NotifyIcon(); UpdateTrayIcon(); _notifyIcon.Visible = true; _notifyIcon.ContextMenu = contextMenu1; _notifyIcon.MouseClick += notifyIcon1_Click; _notifyIcon.MouseDoubleClick += notifyIcon1_DoubleClick; this.updateChecker = new UpdateChecker(); updateChecker.NewVersionFound += updateChecker_NewVersionFound; LoadCurrentConfiguration(); if (controller.GetConfiguration().isDefault) { _isFirstRun = true; ShowConfigForm(); } //timerDelayCheckUpdate = new System.Timers.Timer(1000 * 10.0); //timerDelayCheckUpdate.Elapsed += timer_Elapsed; //timerDelayCheckUpdate.Start(); }
internal void UpdateConfiguration(ShadowsocksController controller) { _controller = controller; Reset(); try { if (Config.StatisticsEnabled) { StartTimerWithoutState(ref _recorder, Run, RecordingInterval); LoadRawStatistics(); StartTimerWithoutState(ref _speedMonior, UpdateSpeed, _monitorInterval); } else { _recorder?.Dispose(); _speedMonior?.Dispose(); } } catch (Exception e) { Logging.LogUsefulException(e); } }
internal void UpdateConfiguration(ShadowsocksController controller) { _controller = controller; Reset(); try { if (Config.StatisticsEnabled) { LoadRawStatistics(); if (_perSecondTimer == null) { _perSecondTimer = new Timer(OperationsPerSecond, new Counter(), _delayBeforeStart, TimeSpan.FromSeconds(1)); } } else { _perSecondTimer?.Dispose(); } } catch (Exception e) { Logging.LogUsefulException(e); } }
public TCPRelay(ShadowsocksController controller) { _controller = controller; Handlers = new HashSet <TCPHandler>(); _lastSweepTime = DateTime.Now; }
public PublicMenuViewController(ShadowsocksController controller) : base(controller) { PublicMenuViewController.controller = this; }
public UDPRelay(ShadowsocksController controller) { this._controller = controller; }
public APIServer(ShadowsocksController controller, Configuration config) { _controller = controller; _config = config; }
public UDPRelay(ShadowsocksController controller) { this._controller = controller; this._cache = new LRUCache <IPEndPoint, UDPHandler>(512); // todo: choose a smart number }
public TCPRelay(ShadowsocksController controller) { this._controller = controller; this.Handlers = new HashSet <Handler>(); this._lastSweepTime = DateTime.Now; }
public static async Task UpdateFreeConf(ShadowsocksController controller) { controller.socket.Emit("latest"); FreeUpdateCompleted?.Invoke(null, new FreeResultEventArgs(true)); }
static void Main() { Util.Utils.ReleaseMemory(); using (Mutex mutex = new Mutex(false, "Global\\" + "71981632-A427-497F-AB91-241CD227EC1F")) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (!mutex.WaitOne(0, false)) { Process[] oldProcesses = Process.GetProcessesByName("Shadowsocks"); if (oldProcesses.Length > 0) { Process oldProcess = oldProcesses[0]; } MessageBox.Show("已经存在运行的I-WALL,请检查系统托盘。"); return; } Directory.SetCurrentDirectory(Application.StartupPath); #if !DEBUG Logging.OpenLogFile(); #endif ShadowsocksController controller = new ShadowsocksController(); MenuViewController viewController = new MenuViewController(controller); controller.Start(); /* if (System.IO.File.Exists(@"C:\test.txt")) System.IO.File.Delete(@"C:\test.txt");*/ Application.Run(); } }