diff --git a/v2rayN/v2rayN/Forms/MainForm.Designer.cs b/v2rayN/v2rayN/Forms/MainForm.Designer.cs index 5b8d5681..c6e1bba8 100644 --- a/v2rayN/v2rayN/Forms/MainForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/MainForm.Designer.cs @@ -78,6 +78,14 @@ this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.txtMsgBox = new System.Windows.Forms.TextBox(); + this.ssMain = new System.Windows.Forms.StatusStrip(); + this.toolSslSocksPortLab = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolSslSocksPort = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolSslBlank1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolSslHttpPort = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolSslPacPort = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolSslBlank3 = new System.Windows.Forms.ToolStripStatusLabel(); this.panel1 = new System.Windows.Forms.Panel(); this.tsMain = new System.Windows.Forms.ToolStrip(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); @@ -103,6 +111,8 @@ this.tsbPromotion = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); this.tsbClose = new System.Windows.Forms.ToolStripButton(); + this.toolSslHttpPortLab = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolSslPacPortLab = new System.Windows.Forms.ToolStripStatusLabel(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -111,6 +121,7 @@ this.cmsMain.SuspendLayout(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); + this.ssMain.SuspendLayout(); this.tsMain.SuspendLayout(); this.SuspendLayout(); // @@ -122,19 +133,17 @@ // // splitContainer1.Panel1 // - resources.ApplyResources(this.splitContainer1.Panel1, "splitContainer1.Panel1"); this.splitContainer1.Panel1.Controls.Add(this.lvServers); // // splitContainer1.Panel2 // - resources.ApplyResources(this.splitContainer1.Panel2, "splitContainer1.Panel2"); this.splitContainer1.Panel2.Controls.Add(this.qrCodeControl); this.splitContainer1.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.splitContainer1_SplitterMoved); // // lvServers // - resources.ApplyResources(this.lvServers, "lvServers"); this.lvServers.ContextMenuStrip = this.cmsLv; + resources.ApplyResources(this.lvServers, "lvServers"); this.lvServers.FullRowSelect = true; this.lvServers.GridLines = true; this.lvServers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; @@ -150,7 +159,6 @@ // // cmsLv // - resources.ApplyResources(this.cmsLv, "cmsLv"); this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20); this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuAddVmessServer, @@ -179,152 +187,153 @@ this.menuExport2SubContent}); this.cmsLv.Name = "cmsLv"; this.cmsLv.OwnerItem = this.tsbServer; + resources.ApplyResources(this.cmsLv, "cmsLv"); // // menuAddVmessServer // - resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer"); this.menuAddVmessServer.Name = "menuAddVmessServer"; + resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer"); this.menuAddVmessServer.Click += new System.EventHandler(this.menuAddVmessServer_Click); // // menuAddShadowsocksServer // - resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer"); this.menuAddShadowsocksServer.Name = "menuAddShadowsocksServer"; + resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer"); this.menuAddShadowsocksServer.Click += new System.EventHandler(this.menuAddShadowsocksServer_Click); // // menuAddSocksServer // - resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer"); this.menuAddSocksServer.Name = "menuAddSocksServer"; + resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer"); this.menuAddSocksServer.Click += new System.EventHandler(this.menuAddSocksServer_Click); // // menuAddCustomServer // - resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer"); this.menuAddCustomServer.Name = "menuAddCustomServer"; + resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer"); this.menuAddCustomServer.Click += new System.EventHandler(this.menuAddCustomServer_Click); // // menuAddServers // - resources.ApplyResources(this.menuAddServers, "menuAddServers"); this.menuAddServers.Name = "menuAddServers"; + resources.ApplyResources(this.menuAddServers, "menuAddServers"); this.menuAddServers.Click += new System.EventHandler(this.menuAddServers_Click); // // menuScanScreen // - resources.ApplyResources(this.menuScanScreen, "menuScanScreen"); this.menuScanScreen.Name = "menuScanScreen"; + resources.ApplyResources(this.menuScanScreen, "menuScanScreen"); this.menuScanScreen.Click += new System.EventHandler(this.menuScanScreen_Click); // // toolStripSeparator1 // - resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); this.toolStripSeparator1.Name = "toolStripSeparator1"; + resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); // // menuRemoveServer // - resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer"); this.menuRemoveServer.Name = "menuRemoveServer"; + resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer"); this.menuRemoveServer.Click += new System.EventHandler(this.menuRemoveServer_Click); // // menuCopyServer // - resources.ApplyResources(this.menuCopyServer, "menuCopyServer"); this.menuCopyServer.Name = "menuCopyServer"; + resources.ApplyResources(this.menuCopyServer, "menuCopyServer"); this.menuCopyServer.Click += new System.EventHandler(this.menuCopyServer_Click); // // menuSetDefaultServer // - resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer"); this.menuSetDefaultServer.Name = "menuSetDefaultServer"; + resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer"); this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click); // // toolStripSeparator3 // - resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); this.toolStripSeparator3.Name = "toolStripSeparator3"; + resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); // // menuMoveTop // - resources.ApplyResources(this.menuMoveTop, "menuMoveTop"); this.menuMoveTop.Name = "menuMoveTop"; + resources.ApplyResources(this.menuMoveTop, "menuMoveTop"); this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click); // // menuMoveUp // - resources.ApplyResources(this.menuMoveUp, "menuMoveUp"); this.menuMoveUp.Name = "menuMoveUp"; + resources.ApplyResources(this.menuMoveUp, "menuMoveUp"); this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click); // // menuMoveDown // - resources.ApplyResources(this.menuMoveDown, "menuMoveDown"); this.menuMoveDown.Name = "menuMoveDown"; + resources.ApplyResources(this.menuMoveDown, "menuMoveDown"); this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click); // // menuMoveBottom // - resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom"); this.menuMoveBottom.Name = "menuMoveBottom"; + resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom"); this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click); // // menuSelectAll // - resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); this.menuSelectAll.Name = "menuSelectAll"; + resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); // // toolStripSeparator9 // - resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9"); this.toolStripSeparator9.Name = "toolStripSeparator9"; + resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9"); // // menuPingServer // - resources.ApplyResources(this.menuPingServer, "menuPingServer"); this.menuPingServer.Name = "menuPingServer"; + resources.ApplyResources(this.menuPingServer, "menuPingServer"); this.menuPingServer.Click += new System.EventHandler(this.menuPingServer_Click); // // menuSpeedServer // - resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer"); this.menuSpeedServer.Name = "menuSpeedServer"; + resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer"); this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click); // // toolStripSeparator6 // - resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6"); this.toolStripSeparator6.Name = "toolStripSeparator6"; + resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6"); // // menuExport2ClientConfig // - resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig"); this.menuExport2ClientConfig.Name = "menuExport2ClientConfig"; + resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig"); this.menuExport2ClientConfig.Click += new System.EventHandler(this.menuExport2ClientConfig_Click); // // menuExport2ServerConfig // - resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig"); this.menuExport2ServerConfig.Name = "menuExport2ServerConfig"; + resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig"); this.menuExport2ServerConfig.Click += new System.EventHandler(this.menuExport2ServerConfig_Click); // // menuExport2ShareUrl // - resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl"); this.menuExport2ShareUrl.Name = "menuExport2ShareUrl"; + resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl"); this.menuExport2ShareUrl.Click += new System.EventHandler(this.menuExport2ShareUrl_Click); // // menuExport2SubContent // - resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent"); this.menuExport2SubContent.Name = "menuExport2SubContent"; + resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent"); this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click); // // tsbServer // - resources.ApplyResources(this.tsbServer, "tsbServer"); this.tsbServer.DropDown = this.cmsLv; this.tsbServer.Image = global::v2rayN.Properties.Resources.server; + resources.ApplyResources(this.tsbServer, "tsbServer"); this.tsbServer.Name = "tsbServer"; // // qrCodeControl @@ -334,14 +343,14 @@ // // notifyMain // - resources.ApplyResources(this.notifyMain, "notifyMain"); this.notifyMain.ContextMenuStrip = this.cmsMain; + resources.ApplyResources(this.notifyMain, "notifyMain"); this.notifyMain.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyMain_MouseClick); // // cmsMain // - resources.ApplyResources(this.cmsMain, "cmsMain"); this.cmsMain.ImageScalingSize = new System.Drawing.Size(20, 20); + resources.ApplyResources(this.cmsMain, "cmsMain"); this.cmsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuSysAgentEnabled, this.menuSysAgentMode, @@ -358,76 +367,76 @@ // // menuSysAgentEnabled // - resources.ApplyResources(this.menuSysAgentEnabled, "menuSysAgentEnabled"); this.menuSysAgentEnabled.Name = "menuSysAgentEnabled"; + resources.ApplyResources(this.menuSysAgentEnabled, "menuSysAgentEnabled"); this.menuSysAgentEnabled.Click += new System.EventHandler(this.menuSysAgentEnabled_Click); // // menuSysAgentMode // - resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode"); this.menuSysAgentMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuGlobal, this.menuGlobalPAC, this.menuKeep, this.menuKeepPAC}); this.menuSysAgentMode.Name = "menuSysAgentMode"; + resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode"); // // menuGlobal // - resources.ApplyResources(this.menuGlobal, "menuGlobal"); this.menuGlobal.Name = "menuGlobal"; + resources.ApplyResources(this.menuGlobal, "menuGlobal"); this.menuGlobal.Click += new System.EventHandler(this.menuGlobal_Click); // // menuGlobalPAC // - resources.ApplyResources(this.menuGlobalPAC, "menuGlobalPAC"); this.menuGlobalPAC.Name = "menuGlobalPAC"; + resources.ApplyResources(this.menuGlobalPAC, "menuGlobalPAC"); this.menuGlobalPAC.Click += new System.EventHandler(this.menuGlobalPAC_Click); // // menuKeep // - resources.ApplyResources(this.menuKeep, "menuKeep"); this.menuKeep.Name = "menuKeep"; + resources.ApplyResources(this.menuKeep, "menuKeep"); this.menuKeep.Click += new System.EventHandler(this.menuKeep_Click); // // menuKeepPAC // - resources.ApplyResources(this.menuKeepPAC, "menuKeepPAC"); this.menuKeepPAC.Name = "menuKeepPAC"; + resources.ApplyResources(this.menuKeepPAC, "menuKeepPAC"); this.menuKeepPAC.Click += new System.EventHandler(this.menuKeepPAC_Click); // // menuServers // - resources.ApplyResources(this.menuServers, "menuServers"); this.menuServers.Name = "menuServers"; + resources.ApplyResources(this.menuServers, "menuServers"); // // menuAddServers2 // - resources.ApplyResources(this.menuAddServers2, "menuAddServers2"); this.menuAddServers2.Name = "menuAddServers2"; + resources.ApplyResources(this.menuAddServers2, "menuAddServers2"); this.menuAddServers2.Click += new System.EventHandler(this.menuAddServers_Click); // // menuScanScreen2 // - resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2"); this.menuScanScreen2.Name = "menuScanScreen2"; + resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2"); this.menuScanScreen2.Click += new System.EventHandler(this.menuScanScreen_Click); // // menuCopyPACUrl // - resources.ApplyResources(this.menuCopyPACUrl, "menuCopyPACUrl"); this.menuCopyPACUrl.Name = "menuCopyPACUrl"; + resources.ApplyResources(this.menuCopyPACUrl, "menuCopyPACUrl"); this.menuCopyPACUrl.Click += new System.EventHandler(this.menuCopyPACUrl_Click); // // toolStripSeparator2 // - resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2"); this.toolStripSeparator2.Name = "toolStripSeparator2"; + resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2"); // // menuExit // - resources.ApplyResources(this.menuExit, "menuExit"); this.menuExit.Name = "menuExit"; + resources.ApplyResources(this.menuExit, "menuExit"); this.menuExit.Click += new System.EventHandler(this.menuExit_Click); // // bgwPing @@ -444,27 +453,82 @@ // // groupBox1 // - resources.ApplyResources(this.groupBox1, "groupBox1"); this.groupBox1.Controls.Add(this.splitContainer1); + resources.ApplyResources(this.groupBox1, "groupBox1"); this.groupBox1.Name = "groupBox1"; this.groupBox1.TabStop = false; // // groupBox2 // - resources.ApplyResources(this.groupBox2, "groupBox2"); this.groupBox2.Controls.Add(this.txtMsgBox); + this.groupBox2.Controls.Add(this.ssMain); + resources.ApplyResources(this.groupBox2, "groupBox2"); this.groupBox2.Name = "groupBox2"; this.groupBox2.TabStop = false; // // txtMsgBox // - resources.ApplyResources(this.txtMsgBox, "txtMsgBox"); this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52))))); this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + resources.ApplyResources(this.txtMsgBox, "txtMsgBox"); this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228))))); this.txtMsgBox.Name = "txtMsgBox"; this.txtMsgBox.ReadOnly = true; // + // ssMain + // + this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolSslSocksPortLab, + this.toolSslSocksPort, + this.toolSslBlank1, + this.toolSslHttpPortLab, + this.toolSslHttpPort, + this.toolSslBlank2, + this.toolSslPacPortLab, + this.toolSslPacPort, + this.toolSslBlank3}); + resources.ApplyResources(this.ssMain, "ssMain"); + this.ssMain.Name = "ssMain"; + this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked); + // + // toolSslSocksPortLab + // + this.toolSslSocksPortLab.Name = "toolSslSocksPortLab"; + resources.ApplyResources(this.toolSslSocksPortLab, "toolSslSocksPortLab"); + // + // toolSslSocksPort + // + this.toolSslSocksPort.Name = "toolSslSocksPort"; + resources.ApplyResources(this.toolSslSocksPort, "toolSslSocksPort"); + // + // toolSslBlank1 + // + this.toolSslBlank1.Name = "toolSslBlank1"; + resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1"); + this.toolSslBlank1.Spring = true; + // + // toolSslHttpPort + // + this.toolSslHttpPort.Name = "toolSslHttpPort"; + resources.ApplyResources(this.toolSslHttpPort, "toolSslHttpPort"); + // + // toolSslBlank2 + // + this.toolSslBlank2.Name = "toolSslBlank2"; + resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2"); + this.toolSslBlank2.Spring = true; + // + // toolSslPacPort + // + this.toolSslPacPort.Name = "toolSslPacPort"; + resources.ApplyResources(this.toolSslPacPort, "toolSslPacPort"); + // + // toolSslBlank3 + // + this.toolSslBlank3.Name = "toolSslBlank3"; + resources.ApplyResources(this.toolSslBlank3, "toolSslBlank3"); + this.toolSslBlank3.Spring = true; + // // panel1 // resources.ApplyResources(this.panel1, "panel1"); @@ -472,7 +536,6 @@ // // tsMain // - resources.ApplyResources(this.tsMain, "tsMain"); this.tsMain.ImageScalingSize = new System.Drawing.Size(32, 32); this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsbServer, @@ -489,50 +552,51 @@ this.tsbPromotion, this.toolStripSeparator11, this.tsbClose}); + resources.ApplyResources(this.tsMain, "tsMain"); this.tsMain.Name = "tsMain"; // // toolStripSeparator4 // - resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4"); this.toolStripSeparator4.Name = "toolStripSeparator4"; + resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4"); // // tsbSub // - resources.ApplyResources(this.tsbSub, "tsbSub"); this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsbSubSetting, this.tsbSubUpdate}); this.tsbSub.Image = global::v2rayN.Properties.Resources.sub; + resources.ApplyResources(this.tsbSub, "tsbSub"); this.tsbSub.Name = "tsbSub"; // // tsbSubSetting // - resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting"); this.tsbSubSetting.Name = "tsbSubSetting"; + resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting"); this.tsbSubSetting.Click += new System.EventHandler(this.tsbSubSetting_Click); // // tsbSubUpdate // - resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate"); this.tsbSubUpdate.Name = "tsbSubUpdate"; + resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate"); this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click); // // toolStripSeparator8 // - resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8"); this.toolStripSeparator8.Name = "toolStripSeparator8"; + resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8"); // // tsbOptionSetting // - resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting"); this.tsbOptionSetting.Image = global::v2rayN.Properties.Resources.option; + resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting"); this.tsbOptionSetting.Name = "tsbOptionSetting"; this.tsbOptionSetting.Click += new System.EventHandler(this.tsbOptionSetting_Click); // // toolStripSeparator5 // - resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5"); this.toolStripSeparator5.Name = "toolStripSeparator5"; + resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5"); // // tsbReload // @@ -542,95 +606,95 @@ // // toolStripSeparator7 // - resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7"); this.toolStripSeparator7.Name = "toolStripSeparator7"; + resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7"); // // tsbCheckUpdate // - resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate"); this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsbCheckUpdateN, this.tsbCheckUpdateCore, this.tsbCheckUpdatePACList, this.tsbCheckClearPACList}); this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate; + resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate"); this.tsbCheckUpdate.Name = "tsbCheckUpdate"; // // tsbCheckUpdateN // - resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN"); this.tsbCheckUpdateN.Name = "tsbCheckUpdateN"; + resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN"); this.tsbCheckUpdateN.Click += new System.EventHandler(this.tsbCheckUpdateN_Click); // // tsbCheckUpdateCore // - resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore"); this.tsbCheckUpdateCore.Name = "tsbCheckUpdateCore"; + resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore"); this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click); // // tsbCheckUpdatePACList // - resources.ApplyResources(this.tsbCheckUpdatePACList, "tsbCheckUpdatePACList"); this.tsbCheckUpdatePACList.Name = "tsbCheckUpdatePACList"; + resources.ApplyResources(this.tsbCheckUpdatePACList, "tsbCheckUpdatePACList"); this.tsbCheckUpdatePACList.Click += new System.EventHandler(this.tsbCheckUpdatePACList_Click); // // tsbCheckClearPACList // - resources.ApplyResources(this.tsbCheckClearPACList, "tsbCheckClearPACList"); this.tsbCheckClearPACList.Name = "tsbCheckClearPACList"; + resources.ApplyResources(this.tsbCheckClearPACList, "tsbCheckClearPACList"); this.tsbCheckClearPACList.Click += new System.EventHandler(this.tsbCheckClearPACList_Click); // // toolStripSeparator10 // - resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10"); this.toolStripSeparator10.Name = "toolStripSeparator10"; + resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10"); // // tsbHelp // - resources.ApplyResources(this.tsbHelp, "tsbHelp"); this.tsbHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsbAbout, this.toolStripSeparator12, this.tsbLanguageDef, this.tsbLanguageZhHans}); this.tsbHelp.Image = global::v2rayN.Properties.Resources.help; + resources.ApplyResources(this.tsbHelp, "tsbHelp"); this.tsbHelp.Name = "tsbHelp"; // // tsbAbout // - resources.ApplyResources(this.tsbAbout, "tsbAbout"); this.tsbAbout.Name = "tsbAbout"; + resources.ApplyResources(this.tsbAbout, "tsbAbout"); this.tsbAbout.Click += new System.EventHandler(this.tsbAbout_Click); // // toolStripSeparator12 // - resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12"); this.toolStripSeparator12.Name = "toolStripSeparator12"; + resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12"); // // tsbLanguageDef // - resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef"); this.tsbLanguageDef.Name = "tsbLanguageDef"; + resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef"); this.tsbLanguageDef.Click += new System.EventHandler(this.tsbLanguageDef_Click); // // tsbLanguageZhHans // - resources.ApplyResources(this.tsbLanguageZhHans, "tsbLanguageZhHans"); this.tsbLanguageZhHans.Name = "tsbLanguageZhHans"; + resources.ApplyResources(this.tsbLanguageZhHans, "tsbLanguageZhHans"); this.tsbLanguageZhHans.Click += new System.EventHandler(this.tsbLanguageZhHans_Click); // // tsbPromotion // - resources.ApplyResources(this.tsbPromotion, "tsbPromotion"); this.tsbPromotion.ForeColor = System.Drawing.Color.Black; this.tsbPromotion.Image = global::v2rayN.Properties.Resources.promotion; + resources.ApplyResources(this.tsbPromotion, "tsbPromotion"); this.tsbPromotion.Name = "tsbPromotion"; this.tsbPromotion.Click += new System.EventHandler(this.tsbPromotion_Click); // // toolStripSeparator11 // - resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11"); this.toolStripSeparator11.Name = "toolStripSeparator11"; + resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11"); // // tsbClose // @@ -638,6 +702,16 @@ this.tsbClose.Name = "tsbClose"; this.tsbClose.Click += new System.EventHandler(this.tsbClose_Click); // + // toolSslHttpPortLab + // + this.toolSslHttpPortLab.Name = "toolSslHttpPortLab"; + resources.ApplyResources(this.toolSslHttpPortLab, "toolSslHttpPortLab"); + // + // toolSslPacPortLab + // + this.toolSslPacPortLab.Name = "toolSslPacPortLab"; + resources.ApplyResources(this.toolSslPacPortLab, "toolSslPacPortLab"); + // // MainForm // resources.ApplyResources(this, "$this"); @@ -662,6 +736,8 @@ this.groupBox1.ResumeLayout(false); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); + this.ssMain.ResumeLayout(false); + this.ssMain.PerformLayout(); this.tsMain.ResumeLayout(false); this.tsMain.PerformLayout(); this.ResumeLayout(false); @@ -744,6 +820,16 @@ private System.Windows.Forms.ToolStripMenuItem tsbLanguageZhHans; private System.Windows.Forms.ToolStripButton tsbPromotion; private System.Windows.Forms.ToolStripMenuItem menuAddSocksServer; + private System.Windows.Forms.StatusStrip ssMain; + private System.Windows.Forms.ToolStripStatusLabel toolSslSocksPort; + private System.Windows.Forms.ToolStripStatusLabel toolSslHttpPort; + private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2; + private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1; + private System.Windows.Forms.ToolStripStatusLabel toolSslPacPort; + private System.Windows.Forms.ToolStripStatusLabel toolSslBlank3; + private System.Windows.Forms.ToolStripStatusLabel toolSslSocksPortLab; + private System.Windows.Forms.ToolStripStatusLabel toolSslHttpPortLab; + private System.Windows.Forms.ToolStripStatusLabel toolSslPacPortLab; } } diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 9b13e035..7129a81e 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -235,6 +235,31 @@ namespace v2rayN.Forms qrCodeControl.showQRCode(index, config); } + private void DisplayToolStatus() + { + var localIP = "127.0.0.1"; + toolSslSocksPort.Text = + toolSslHttpPort.Text = + toolSslPacPort.Text = "NONE"; + + toolSslSocksPort.Text = $"{localIP}:{config.inbound[0].localPort}"; + + if (config.sysAgentEnabled) + { + toolSslHttpPort.Text = $"{localIP}:{Global.sysAgentPort}"; + if (config.listenerType == 2 || config.listenerType == 4) + { + toolSslPacPort.Text = $"{HttpProxyHandle.GetPacUrl()}"; + } + } + } + private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + if (!string.IsNullOrEmpty(e.ClickedItem.Text)) + { + Utils.SetClipboardData(e.ClickedItem.Text); + } + } #endregion #region v2ray 操作 @@ -252,6 +277,7 @@ namespace v2rayN.Forms Global.reloadV2ray = false; ChangeSysAgent(config.sysAgentEnabled); + DisplayToolStatus(); } /// @@ -1073,7 +1099,7 @@ namespace v2rayN.Forms break; } } - + DisplayToolStatus(); } /// @@ -1097,6 +1123,8 @@ namespace v2rayN.Forms menuSysAgentEnabled.Checked = menuSysAgentMode.Enabled = isChecked; + + DisplayToolStatus(); } #endregion @@ -1366,5 +1394,6 @@ namespace v2rayN.Forms #endregion + } } diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index 99934306..61cfde87 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -117,556 +117,172 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Fill + + + 3, 17 + + + 327, 17 + + + 447, 22 + + + Add [VMess] server + + + 447, 22 + + + Add [Shadowsocks] server + + + 447, 22 + + + Add [Socks] server + 447, 22 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Add a custom configuration server - - Magenta - - + 447, 22 - - 97, 53 + + Import bulk URL from clipboard 447, 22 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Scan QR code on the screen - - Restart service + + 444, 6 - - tsbSubSetting - - - menuMoveUp - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 语言-[中文简体] - - - - NoControl - - - Top - - - tsbHelp - - - 338, 22 - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator6 - - - 93, 53 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 187, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + 447, 22 - - tsbCheckUpdateN - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuExport2SubContent - - - toolStripSeparator7 - - - Check for updates to v2rayCore - - - Magenta + + Remove selected server (multiple choice) (Delete) 447, 22 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Copy selected server - - Fill + + 447, 22 - - Subscription + + Set as active server (Enter) - - 992, 351 + + 444, 6 447, 22 - - Export selected server for client configuration + + Up to top - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 447, 22 - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Upward (U) - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 447, 22 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Down (D) - - Export selected server for server configuration + + 447, 22 - - splitContainer1 + + Moves down to the bottom - - ImageAboveText + + 447, 22 - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Select All (Ctrl+A) - - 992, 56 + + 444, 6 - - Bottom + + 447, 22 - - 992, 176 + + Test server delay (multiple choice) - - - 100 + + 447, 22 - - 448, 468 + + Test server speed (multiple choice) - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - v2rayN - - + 444, 6 447, 22 - - toolStripSeparator1 - - - 4 - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 338, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 187, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuPingServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd - QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X - jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY - 6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3 - NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY - B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg== - - - - Servers - - - 3 - - - 3, 17 - - - Fill - - - 6, 56 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddCustomServer - - - menuMoveDown - - - Import bulk URL from clipboard - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Moves down to the bottom - - - 6, 12 - - - 48, 53 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuGlobalPAC - - - Fill - - - 726, 331 - - - toolStripSeparator4 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Batch export share URL to clipboard (multiple choice) - - - Update subscription - - - menuAddServers2 - - - Fill - - - 2 - - - Add [VMess] server - - - 264, 22 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tsbAbout - - - 0 - - - toolStripSeparator5 - - - True - - - 444, 6 - - - tsbPromotion - - - 256, 331 - - - 4, 4, 4, 4 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 444, 6 - - - groupBox1 - - - Add [Socks] server - - - 0 - - - 197, 22 - - - splitContainer1.Panel2 - - - 52, 53 + + Export selected server for client configuration 447, 22 - - 6, 56 + + Export selected server for server configuration - - Test server speed (multiple choice) - - - ImageAboveText - - - splitContainer1 - - - 265, 164 - - - 547, 22 - - - $this - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Check for updates - - - tsbLanguageDef - - - panel1 - - - 3, 17 - - - 4 - - - 197, 22 - - - Only open Http proxy, do not automatically configure proxy server (direct mode) - - - 547, 22 - - - Magenta - - - Remove selected server (multiple choice) (Delete) - - - 0 - - - Help - - - menuSelectAll - - - Up to top - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Scan QR code on the screen - - - ImageAboveText - - - tsbCheckUpdate - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuSetDefaultServer - - - Promotion - - - menuAddServers - - + 447, 22 - - menuAddVmessServer + + Batch export share URL to clipboard (multiple choice) - - tsbLanguageZhHans + + 447, 22 - - toolStripSeparator9 + + Batch export subscription content to clipboard (multiple choice) - - BottomCenter - - - menuExport2ShareUrl - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbReload - - - Check for updates to v2rayN - - + Magenta - - splitContainer1.Panel1 + + 64, 53 - - 0, 66 + + Servers - - 5 - - - Server - - - System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddShadowsocksServer - - - txtMsgBox - - - 261, 6 - - - System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - v2rayN - - - Language-[English] - - - 264, 22 - - - menuScanScreen2 - - - 0 - - - 128, 53 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + ImageAboveText + + 448, 468 + + + cmsLv + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0, 417 - - - 444, 6 - - - 264, 22 - - - Setting - - - menuMoveTop - - - menuKeep + + Fill @@ -685,413 +301,551 @@ ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - menuScanScreen + + 0, 0 - - cmsLv + + 726, 331 - - toolStripSeparator12 + + + 1 - - 6, 56 + + lvServers - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tsbSubUpdate + + splitContainer1.Panel1 - - tsMain + + 0 - - 2 + + splitContainer1.Panel1 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + splitContainer1 - - menuSysAgentMode + + 0 - - 986, 331 + + Fill - - ImageAboveText + + 0, 0 - - 447, 22 + + 256, 331 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 + + + qrCodeControl + + + v2rayN.Forms.QRCodeControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + splitContainer1.Panel2 + + + 0 + + + splitContainer1.Panel2 + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer1 1 - - cmsMain + + 100 - - 264, 22 + + 986, 331 - - menuServers + + 726 - - $this + + 2 + + + splitContainer1 + + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 0 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + + + 137, 17 + + + NoControl - - tsbClose + + 265, 164 - - menuExport2ClientConfig + + cmsMain + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + v2rayN True - - 6, 56 - - - 992, 10 - - - menuKeepPAC - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - toolStripSeparator8 - - - 89, 53 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Test server delay (multiple choice) - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 447, 22 - - + 264, 22 - - menuSysAgentEnabled - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Enable Http proxy - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Subscription settings - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuCopyServer + + 264, 22 Http proxy mode + + 547, 22 + + + Open Http proxy and automatically configure proxy server (global mode) + 547, 22 + + Open PAC and automatically configure PAC (PAC mode) + + + 547, 22 + + + Only open Http proxy, do not automatically configure proxy server (direct mode) + + + 547, 22 + Only open PAC, do not automatically configure PAC - - 447, 22 - - - MainForm - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuExit - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Server list - - - lvServers - - - splitContainer1.Panel1 - - - Magenta - - - menuGlobal - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 5 - - - Check for updated PAC (requires Http proxy) - - - toolStripSeparator11 - - - 447, 22 - - - About - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Select All (Ctrl+A) - - - Information - - - $this - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbCheckUpdateCore - - - 447, 22 - - - menuRemoveServer - - - 986, 156 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.NotifyIcon, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Down (D) - - - menuCopyPACUrl - - - groupBox1 - - - 447, 22 - - - tsbSub - - - Magenta - - - ImageAboveText - - - Copy selected server - - - 0, 0 - - - 447, 22 - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - Simplify PAC (please set Core route) - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Vertical - - - 447, 22 - - - v2rayN.Forms.QRCodeControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0, 0 - - - qrCodeControl - - + 264, 22 - - tsbServer + + Server - - 1 + + 264, 22 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Import bulk URL from clipboard - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - ImageAboveText - - - splitContainer1.Panel2 - - - 338, 22 - - - 184, 6 - - - 0, 0 - - - Upward (U) - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - notifyMain - - - Open Http proxy and automatically configure proxy server (global mode) - - - tsbOptionSetting - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddSocksServer - - - 64, 53 - - - Magenta - - - Open PAC and automatically configure PAC (PAC mode) - - - 447, 22 - - - Set as active server (Enter) - - - bgwPing - - - 726 - - - 6, 56 - - - Add [Shadowsocks] server - - - splitContainer1 - - - 992, 593 - - - 547, 22 - - - tsbCheckClearPACList + + 264, 22 Scan QR code on the screen - - toolStripSeparator10 + + 264, 22 - - menuMoveBottom + + Copy local PAC URL - - 338, 22 + + 261, 6 + + + 264, 22 + + + Exit + + + 232, 17 + + + 498, 17 + + + Fill + + + 0, 66 + + + 992, 351 + + + 2 + + + Server list + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + Fill + + + 3, 17 + + + 0 + + + True + + + Vertical + + + 986, 134 + + + 2 + + + txtMsgBox + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 0 + + + 603, 17 + + + 55, 17 + + + SOCKS5 + + + 0, 17 + + + 238, 17 + + + 38, 17 + + + HTTP + + + 0, 17 + + + 238, 17 + + + 31, 17 + + + PAC + + + 0, 17 + + + 238, 17 + + + 3, 151 + + + 986, 22 + + + 7 + + + statusStrip1 + + + ssMain + + + System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + Bottom + + + 0, 417 + + + 992, 176 + + + 4 + + + Information + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + Top + + + 0, 56 + + + 992, 10 + + + 5 + + + panel1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + + + 409, 17 + + + 0, 0 + + + 992, 56 6 - + + tsMain + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 5 + + + 6, 56 + + Magenta + + 93, 53 + + + Subscription + + + ImageAboveText + + + 197, 22 + + + Subscription settings + + + 197, 22 + + + Update subscription + + + 6, 56 + + + Magenta + + + 52, 53 + + + Setting + + + ImageAboveText + + + 6, 56 + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd + QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X + jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY + 6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3 + NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY + B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg== + + + + BottomCenter + + + Magenta + + + 97, 53 + + + Restart service + + + ImageAboveText + + + 6, 56 + + + Magenta + + + 128, 53 + + + Check for updates + + + ImageAboveText + + + 338, 22 + + + Check for updates to v2rayN + + + 338, 22 + + + Check for updates to v2rayCore + + + 338, 22 + + + Check for updated PAC (requires Http proxy) + + + 338, 22 + + + Simplify PAC (please set Core route) + + + 6, 56 + + + Magenta + + + 48, 53 + + + Help + + + ImageAboveText + + + 187, 22 + + + About + + + 184, 6 + 187, 22 - - menuExport2ServerConfig + + Language-[English] - - 0 + + 187, 22 + + + 语言-[中文简体] + + + Magenta + + + 89, 53 + + + Promotion ImageAboveText @@ -1099,119 +853,479 @@ 6, 56 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/ + GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg== + - - Batch export subscription content to clipboard (multiple choice) + + Magenta 52, 53 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Exit - - - bgwScan - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0, 56 - Close - - 264, 22 + + ImageAboveText - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Import bulk URL from clipboard - - - toolStripSeparator2 - - - Add a custom configuration server - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 2 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuSpeedServer - - - 2 - - - Fill - - - Copy local PAC URL - - - toolStripSeparator3 - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/ - GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg== - - - - 447, 22 - - - 447, 22 - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbCheckUpdatePACList - - - 232, 17 - - - zh-Hans - True 65 - - 137, 17 - - - 498, 17 - - - 17, 17 - - - 409, 17 - - - 327, 17 - + + 6, 12 + + + 992, 593 + + + 4, 4, 4, 4 + + + v2rayN + + + menuAddVmessServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddShadowsocksServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddSocksServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddCustomServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddServers + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuScanScreen + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator1 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuRemoveServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuCopyServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuSetDefaultServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator3 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuMoveTop + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuMoveUp + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuMoveDown + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuMoveBottom + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuSelectAll + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator9 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuPingServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuSpeedServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator6 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuExport2ClientConfig + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuExport2ServerConfig + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuExport2ShareUrl + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuExport2SubContent + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbServer + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + notifyMain + + + System.Windows.Forms.NotifyIcon, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuSysAgentEnabled + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuSysAgentMode + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuGlobal + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuGlobalPAC + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuKeep + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuKeepPAC + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuServers + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddServers2 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuScanScreen2 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuCopyPACUrl + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator2 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuExit + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + bgwPing + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + bgwScan + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolSslSocksPortLab + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolSslSocksPort + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolSslBlank1 + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolSslHttpPort + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolSslBlank2 + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolSslPacPort + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolSslBlank3 + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator4 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbSub + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbSubSetting + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbSubUpdate + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator8 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbOptionSetting + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator5 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbReload + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator7 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbCheckUpdate + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbCheckUpdateN + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbCheckUpdateCore + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbCheckUpdatePACList + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbCheckClearPACList + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator10 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbHelp + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbAbout + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator12 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbLanguageDef + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbLanguageZhHans + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbPromotion + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator11 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbClose + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolSslHttpPortLab + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolSslPacPortLab + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + MainForm + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + \ No newline at end of file diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs index 5046c459..782b4d06 100644 --- a/v2rayN/v2rayN/Global.cs +++ b/v2rayN/v2rayN/Global.cs @@ -108,6 +108,14 @@ namespace v2rayN /// socks /// public const string socksProtocol = "socks://"; + /// + /// http + /// + public const string httpProtocol = "http://"; + /// + /// https + /// + public const string httpsProtocol = "https://"; /// /// pac diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs index ecefedf0..eccef7b5 100644 --- a/v2rayN/v2rayN/Handler/ConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs @@ -112,6 +112,11 @@ namespace v2rayN.Handler // config.pacPort = 8888; //} + if (config.subItem == null) + { + config.subItem = new List(); + } + if (config == null || config.index < 0 || config.vmess.Count <= 0 @@ -146,6 +151,16 @@ namespace v2rayN.Handler { vmessItem.configVersion = 2; vmessItem.configType = (int)EConfigType.Vmess; + + vmessItem.address = vmessItem.address.Trim(); + vmessItem.id = vmessItem.id.Trim(); + vmessItem.security = vmessItem.security.Trim(); + vmessItem.network = vmessItem.network.Trim(); + vmessItem.headerType = vmessItem.headerType.Trim(); + vmessItem.requestHost = vmessItem.requestHost.Trim(); + vmessItem.path = vmessItem.path.Trim(); + vmessItem.streamSecurity = vmessItem.streamSecurity.Trim(); + if (index >= 0) { //修改 @@ -548,6 +563,11 @@ namespace v2rayN.Handler { vmessItem.configVersion = 2; vmessItem.configType = (int)EConfigType.Shadowsocks; + + vmessItem.address = vmessItem.address.Trim(); + vmessItem.id = vmessItem.id.Trim(); + vmessItem.security = vmessItem.security.Trim(); + if (index >= 0) { //修改 @@ -584,6 +604,9 @@ namespace v2rayN.Handler { vmessItem.configVersion = 2; vmessItem.configType = (int)EConfigType.Socks; + + vmessItem.address = vmessItem.address.Trim(); + if (index >= 0) { //修改 @@ -698,6 +721,15 @@ namespace v2rayN.Handler foreach (string str in arrData) { string msg; + //maybe sub + if (str.StartsWith(Global.httpsProtocol) || str.StartsWith(Global.httpProtocol)) + { + if (AddSubItem(ref config, str) == 0) + { + countServers++; + } + continue; + } VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(str, out msg); if (vmessItem == null) { @@ -733,6 +765,32 @@ namespace v2rayN.Handler return -1; } + /// + /// add sub + /// + /// + /// + /// + public static int AddSubItem(ref Config config, string url) + { + //already exists + foreach (var sub in config.subItem) + { + if (url == sub.url) + { + return 0; + } + } + + var subItem = new SubItem(); + subItem.id = string.Empty; + subItem.remarks = "import sub"; + subItem.url = url; + config.subItem.Add(subItem); + + return SaveSubItem(ref config); + } + /// /// save sub /// diff --git a/v2rayN/v2rayN/HttpProxyHandler/HttpWebServerB.cs b/v2rayN/v2rayN/HttpProxyHandler/HttpWebServerB.cs new file mode 100644 index 00000000..55310546 --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/HttpWebServerB.cs @@ -0,0 +1,69 @@ +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Threading; + +namespace v2rayN.HttpProxyHandler +{ + public class HttpWebServerB + { + private int port; + private TcpListener listener; + + private Func _responderMethod; + + public HttpWebServerB(int port, Func method) + { + try + { + this.port = port; + this._responderMethod = method; + + listener = new TcpListener(new IPEndPoint(IPAddress.Any, port)); + listener.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); + listener.Start(); + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + + Utils.SaveLog("WebserverB running..."); + AsyncCallback callback = null; + listener.BeginAcceptTcpClient(callback = ((ares) => + { + try + { + if (listener != null) + { + TcpClient client = listener.EndAcceptTcpClient(ares); + listener.BeginAcceptTcpClient(callback, null); + + if (client != null && _responderMethod != null) + { + _responderMethod(client); + } + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + //Console.WriteLine("Client connected completed"); + + }), null); + } + + + public void Stop() + { + if (listener != null) + { + listener.Stop(); + listener = null; + } + } + + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/HttpWebServerC.cs b/v2rayN/v2rayN/HttpProxyHandler/HttpWebServerC.cs new file mode 100644 index 00000000..d0842a27 --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/HttpWebServerC.cs @@ -0,0 +1,63 @@ +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Threading; + +namespace v2rayN.HttpProxyHandler +{ + public class HttpWebServerC + { + private int port; + private TcpListener listener; + private bool is_active = true; + private string pacRespone = string.Empty; + + public HttpWebServerC(int port, string pacRespone) + { + this.port = port; + this.pacRespone = pacRespone; + } + + public void WorkThread() + { + is_active = true; + Listen(); + } + + public void Listen() + { + try + { + listener = new TcpListener(new IPEndPoint(IPAddress.Any, port)); + listener.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); + listener.Start(); + + Utils.SaveLog("WebserverB running..."); + + while (is_active) + { + TcpClient client = listener.AcceptTcpClient(); + //HttpWebProcessor processor = new HttpWebProcessor(client, pacRespone); + //Thread thread = new Thread(new ThreadStart(processor.process)); + //thread.Start(); + //Thread.Sleep(1); + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + } + + public void Stop() + { + if (listener != null) + { + is_active = false; + listener.Stop(); + listener = null; + } + } + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs index 46165d3d..f52c8107 100644 --- a/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs +++ b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs @@ -1,8 +1,8 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; +using System.Net.Sockets; using System.Text; using v2rayN.Mode; using v2rayN.Properties; @@ -15,92 +15,205 @@ namespace v2rayN.HttpProxyHandler /// class PACServerHandle { - private static Hashtable httpWebServer = new Hashtable(); - private static Hashtable pacList = new Hashtable(); + //private static Hashtable httpWebServer = new Hashtable(); + //private static Hashtable pacList = new Hashtable(); + + //private static string pac = ""; + private static int pacPort = 0; + private static HttpWebServerB server; + // private static HttpWebServerC server; + //static Thread thread; public static void Init(Config config) { InitServer("127.0.0.1"); - - if (config.allowLANConn) - { - List lstIPAddress = Utils.GetHostIPAddress(); - if (lstIPAddress.Count <= 0) - { - return; - } - foreach (string str in lstIPAddress) - { - InitServer(str); - } - } + //if (config.allowLANConn) + //{ + // List lstIPAddress = Utils.GetHostIPAddress(); + // if (lstIPAddress.Count <= 0) + // { + // return; + // } + // InitServer(lstIPAddress[0]); + // //foreach (string str in lstIPAddress) + // //{ + // // InitServer(str); + // //} + //} + //else + //{ + // InitServer("127.0.0.1"); + //} } public static void InitServer(string address) { try { - if (!pacList.ContainsKey(address)) + //pac = GetPacList(address); + + if (pacPort != Global.pacPort) { - pacList.Add(address, GetPacList(address)); + if (server != null) + { + server.Stop(); + server = null; + } + + if (server == null) + { + server = new HttpWebServerB(Global.pacPort, SendResponse); + //server = new HttpWebServerC(Global.pacPort, pac); + pacPort = Global.pacPort; + } } - string prefixes = string.Format("http://{0}:{1}/pac/", address, Global.pacPort); - Utils.SaveLog("Webserver prefixes " + prefixes); - - HttpWebServer ws = new HttpWebServer(SendResponse, prefixes); - ws.Run(); - - if (!httpWebServer.ContainsKey(address) && ws != null) - { - httpWebServer.Add(address, ws); - } + //thread = new Thread(server.WorkThread); + //thread.IsBackground = true; + //thread.Start(); + Utils.SaveLog("Webserver at " + address); } catch (Exception ex) { Utils.SaveLog("Webserver InitServer " + ex.Message); } + + // if (!pacList.ContainsKey(address)) + // { + // pacList.Add(address, GetPacList(address)); + // } + + // string prefixes = string.Format("http://{0}:{1}/pac/", address, Global.pacPort); + // Utils.SaveLog("Webserver prefixes " + prefixes); + + // HttpWebServer ws = new HttpWebServer(SendResponse, prefixes); + // ws.Run(); + + // if (!httpWebServer.ContainsKey(address) && ws != null) + // { + // httpWebServer.Add(address, ws); + // } + //} + //catch (Exception ex) + //{ + // Utils.SaveLog("Webserver InitServer " + ex.Message); + //} } - public static string SendResponse(HttpListenerRequest request) + public static string SendResponse(TcpClient tcpClient) { try { - string[] arrAddress = request.UserHostAddress.Split(':'); - string address = "127.0.0.1"; - if (arrAddress.Length > 0) + var address = ((IPEndPoint)tcpClient.Client.LocalEndPoint).Address.ToString(); + var pac = GetPacList(address); + + Console.WriteLine("SendResponse addr " + address); + Utils.SaveLog("SendResponse addr " + address); + + NetworkStream netStream = tcpClient.GetStream(); + if (netStream.CanRead) { - address = arrAddress[0]; + // Reads NetworkStream into a byte buffer. + byte[] bytes = new byte[tcpClient.ReceiveBufferSize]; + + // Read can return anything from 0 to numBytesToRead. + // This method blocks until at least one byte is read. + netStream.Read(bytes, 0, (int)tcpClient.ReceiveBufferSize); + + // Returns the data received from the host to the console. + string returndata = Encoding.UTF8.GetString(bytes); + if (!string.IsNullOrEmpty(returndata) + && returndata.IndexOf("/pac/") >= 0 + && netStream.CanWrite) + { + + Byte[] sendBytes = Encoding.UTF8.GetBytes(writeSuccess(pac)); + netStream.Write(sendBytes, 0, sendBytes.Length); + } } - return pacList[address].ToString(); + + netStream.Close(); + tcpClient.Close(); + return ""; } catch (Exception ex) { - Utils.SaveLog("Webserver SendResponse " + ex.Message); - return ex.Message; + Utils.SaveLog(ex.Message, ex); } + return ""; } + private static string writeSuccess(string pac) + { + StringBuilder sb = new StringBuilder(); + string content_type = "application/x-ns-proxy-autoconfig"; + + sb.Append("HTTP/1.0 200 OK"); + sb.AppendLine(); + sb.Append(String.Format("Content-Type:{0};charset=utf-8", content_type)); + sb.AppendLine(); + sb.Append("Connection: close"); + sb.AppendLine(); + sb.Append(pac); + sb.AppendLine(); + + return sb.ToString(); + } + + /* + public static string SendResponse(HttpListenerRequest request) + { + try + { + string[] arrAddress = request.UserHostAddress.Split(':'); + string address = "127.0.0.1"; + if (arrAddress.Length > 0) + { + address = arrAddress[0]; + } + return pacList[address].ToString(); + } + catch (Exception ex) + { + Utils.SaveLog("Webserver SendResponse " + ex.Message); + return ex.Message; + } + } + */ + public static void Stop() { - try - { - if (httpWebServer == null) - { - return; - } - foreach (var key in httpWebServer.Keys) - { - Utils.SaveLog("Webserver Stop " + key.ToString()); - ((HttpWebServer)httpWebServer[key]).Stop(); - } - httpWebServer.Clear(); - } - catch (Exception ex) - { - Utils.SaveLog("Webserver Stop " + ex.Message); - } + //try + //{ + // if (server != null) + // { + // server.Stop(); + // server = null; + // } + //} + //catch (Exception ex) + //{ + // Utils.SaveLog("Webserver Stop " + ex.Message); + //} + + //try + //{ + // if (httpWebServer == null) + // { + // return; + // } + // foreach (var key in httpWebServer.Keys) + // { + // Utils.SaveLog("Webserver Stop " + key.ToString()); + // ((HttpWebServer)httpWebServer[key]).Stop(); + // } + // httpWebServer.Clear(); + //} + //catch (Exception ex) + //{ + // Utils.SaveLog("Webserver Stop " + ex.Message); + //} } private static string GetPacList(string address) diff --git a/v2rayN/v2rayN/Mode/Config.cs b/v2rayN/v2rayN/Mode/Config.cs index eb9aa954..fc7ce509 100644 --- a/v2rayN/v2rayN/Mode/Config.cs +++ b/v2rayN/v2rayN/Mode/Config.cs @@ -112,7 +112,7 @@ namespace v2rayN.Mode { return string.Empty; } - return vmess[index].address; + return vmess[index].address.Trim(); } public int port() @@ -130,7 +130,7 @@ namespace v2rayN.Mode { return string.Empty; } - return vmess[index].id; + return vmess[index].id.Trim(); } public int alterId() @@ -148,7 +148,7 @@ namespace v2rayN.Mode { return string.Empty; } - return vmess[index].security; + return vmess[index].security.Trim(); } public string remarks() @@ -157,7 +157,7 @@ namespace v2rayN.Mode { return string.Empty; } - return vmess[index].remarks; + return vmess[index].remarks.Trim(); } public string network() { @@ -165,7 +165,7 @@ namespace v2rayN.Mode { return Global.DefaultNetwork; } - return vmess[index].network; + return vmess[index].network.Trim(); } public string headerType() { diff --git a/v2rayN/v2rayN/Mode/VmessQRCode.cs b/v2rayN/v2rayN/Mode/VmessQRCode.cs index 29023757..0c86243b 100644 --- a/v2rayN/v2rayN/Mode/VmessQRCode.cs +++ b/v2rayN/v2rayN/Mode/VmessQRCode.cs @@ -8,46 +8,46 @@ namespace v2rayN.Mode /// /// 版本 /// - public string v { get; set; } + public string v { get; set; } = string.Empty; /// /// 备注 /// - public string ps { get; set; } + public string ps { get; set; } = string.Empty; /// /// 远程服务器地址 /// - public string add { get; set; } + public string add { get; set; } = string.Empty; /// /// 远程服务器端口 /// - public string port { get; set; } + public string port { get; set; } = string.Empty; /// /// 远程服务器ID /// - public string id { get; set; } + public string id { get; set; } = string.Empty; /// /// 远程服务器额外ID /// - public string aid { get; set; } + public string aid { get; set; } = string.Empty; /// /// 传输协议tcp,kcp,ws /// - public string net { get; set; } + public string net { get; set; } = string.Empty; /// /// 伪装类型 /// - public string type { get; set; } + public string type { get; set; } = string.Empty; /// /// 伪装的域名 /// - public string host { get; set; } + public string host { get; set; } = string.Empty; /// /// path /// - public string path { get; set; } + public string path { get; set; } = string.Empty; /// /// 底层传输安全 /// - public string tls { get; set; } + public string tls { get; set; } = string.Empty; } } diff --git a/v2rayN/v2rayN/Properties/AssemblyInfo.cs b/v2rayN/v2rayN/Properties/AssemblyInfo.cs index 21923c6f..5aec7833 100644 --- a/v2rayN/v2rayN/Properties/AssemblyInfo.cs +++ b/v2rayN/v2rayN/Properties/AssemblyInfo.cs @@ -33,4 +33,4 @@ using System.Runtime.InteropServices; // 方法是按如下所示使用“*”: //[assembly: AssemblyVersion("1.0.*")] //[assembly: AssemblyVersion("1.0.0")] -[assembly: AssemblyFileVersion("2.30")] +[assembly: AssemblyFileVersion("2.34")] diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj index 33c3d80c..8fafdba5 100644 --- a/v2rayN/v2rayN/v2rayN.csproj +++ b/v2rayN/v2rayN/v2rayN.csproj @@ -144,6 +144,8 @@ + +