diff --git a/v2rayN/v2rayN/Base/ListViewFlickerFree.cs b/v2rayN/v2rayN/Base/ListViewFlickerFree.cs index a113a7bc..c70ccfc6 100644 --- a/v2rayN/v2rayN/Base/ListViewFlickerFree.cs +++ b/v2rayN/v2rayN/Base/ListViewFlickerFree.cs @@ -46,5 +46,7 @@ namespace v2rayN.Base } catch { } } + + } } \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServerForm.resx b/v2rayN/v2rayN/Forms/AddServerForm.resx index 6d3eec6c..156f1f49 100644 --- a/v2rayN/v2rayN/Forms/AddServerForm.resx +++ b/v2rayN/v2rayN/Forms/AddServerForm.resx @@ -1318,7 +1318,7 @@ True - 25 + 114 6, 12 diff --git a/v2rayN/v2rayN/Forms/MainForm.Designer.cs b/v2rayN/v2rayN/Forms/MainForm.Designer.cs index 1b546c7b..148b09d9 100644 --- a/v2rayN/v2rayN/Forms/MainForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/MainForm.Designer.cs @@ -68,9 +68,9 @@ this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components); this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components); this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem(); - this.menuKeepNothing = new System.Windows.Forms.ToolStripMenuItem(); - this.menuGlobal = new System.Windows.Forms.ToolStripMenuItem(); this.menuKeepClear = new System.Windows.Forms.ToolStripMenuItem(); + this.menuGlobal = new System.Windows.Forms.ToolStripMenuItem(); + this.menuKeepNothing = new System.Windows.Forms.ToolStripMenuItem(); this.menuServers = new System.Windows.Forms.ToolStripMenuItem(); this.menuAddServers2 = new System.Windows.Forms.ToolStripMenuItem(); this.menuScanScreen2 = new System.Windows.Forms.ToolStripMenuItem(); @@ -421,16 +421,16 @@ // resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode"); this.menuSysAgentMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuKeepNothing, + this.menuKeepClear, this.menuGlobal, - this.menuKeepClear}); + this.menuKeepNothing}); this.menuSysAgentMode.Name = "menuSysAgentMode"; // - // menuKeepNothing + // menuKeepClear // - resources.ApplyResources(this.menuKeepNothing, "menuKeepNothing"); - this.menuKeepNothing.Name = "menuKeepNothing"; - this.menuKeepNothing.Click += new System.EventHandler(this.menuKeepNothing_Click); + resources.ApplyResources(this.menuKeepClear, "menuKeepClear"); + this.menuKeepClear.Name = "menuKeepClear"; + this.menuKeepClear.Click += new System.EventHandler(this.menuKeepClear_Click); // // menuGlobal // @@ -438,11 +438,11 @@ this.menuGlobal.Name = "menuGlobal"; this.menuGlobal.Click += new System.EventHandler(this.menuGlobal_Click); // - // menuKeepClear + // menuKeepNothing // - resources.ApplyResources(this.menuKeepClear, "menuKeepClear"); - this.menuKeepClear.Name = "menuKeepClear"; - this.menuKeepClear.Click += new System.EventHandler(this.menuKeepClear_Click); + resources.ApplyResources(this.menuKeepNothing, "menuKeepNothing"); + this.menuKeepNothing.Name = "menuKeepNothing"; + this.menuKeepNothing.Click += new System.EventHandler(this.menuKeepNothing_Click); // // menuServers // diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 0b7b2e55..96e6819e 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -223,11 +223,7 @@ namespace v2rayN.Forms } VmessItem item = config.vmess[k]; - - void _addSubItem(ListViewItem i, string name, string text) - { - i.SubItems.Add(new ListViewItem.ListViewSubItem() { Name = name, Text = text }); - } + bool stats = statistics != null && statistics.Enable; if (stats) { @@ -241,20 +237,20 @@ namespace v2rayN.Forms } } ListViewItem lvItem = new ListViewItem(def); - _addSubItem(lvItem, EServerColName.configType.ToString(), ((EConfigType)item.configType).ToString()); - _addSubItem(lvItem, EServerColName.remarks.ToString(), item.remarks); - _addSubItem(lvItem, EServerColName.address.ToString(), item.address); - _addSubItem(lvItem, EServerColName.port.ToString(), item.port.ToString()); - _addSubItem(lvItem, EServerColName.security.ToString(), item.security); - _addSubItem(lvItem, EServerColName.network.ToString(), item.network); - _addSubItem(lvItem, EServerColName.subRemarks.ToString(), item.getSubRemarks(config)); - _addSubItem(lvItem, EServerColName.testResult.ToString(), item.testResult); + Utils.AddSubItem(lvItem, EServerColName.configType.ToString(), ((EConfigType)item.configType).ToString()); + Utils.AddSubItem(lvItem, EServerColName.remarks.ToString(), item.remarks); + Utils.AddSubItem(lvItem, EServerColName.address.ToString(), item.address); + Utils.AddSubItem(lvItem, EServerColName.port.ToString(), item.port.ToString()); + Utils.AddSubItem(lvItem, EServerColName.security.ToString(), item.security); + Utils.AddSubItem(lvItem, EServerColName.network.ToString(), item.network); + Utils.AddSubItem(lvItem, EServerColName.subRemarks.ToString(), item.getSubRemarks(config)); + Utils.AddSubItem(lvItem, EServerColName.testResult.ToString(), item.testResult); if (stats) { - _addSubItem(lvItem, EServerColName.todayDown.ToString(), todayDown); - _addSubItem(lvItem, EServerColName.todayUp.ToString(), todayUp); - _addSubItem(lvItem, EServerColName.totalDown.ToString(), totalDown); - _addSubItem(lvItem, EServerColName.totalUp.ToString(), totalUp); + Utils.AddSubItem(lvItem, EServerColName.todayDown.ToString(), todayDown); + Utils.AddSubItem(lvItem, EServerColName.todayUp.ToString(), todayUp); + Utils.AddSubItem(lvItem, EServerColName.totalDown.ToString(), totalDown); + Utils.AddSubItem(lvItem, EServerColName.totalUp.ToString(), totalUp); } if (k % 2 == 1) // 隔行着色 @@ -1138,17 +1134,15 @@ namespace v2rayN.Forms #endregion #region 系统代理相关 - - + private void menuKeepClear_Click(object sender, EventArgs e) + { + SetListenerType(ESysProxyType.ForcedClear); + } private void menuGlobal_Click(object sender, EventArgs e) { SetListenerType(ESysProxyType.ForcedChange); } - private void menuKeepClear_Click(object sender, EventArgs e) - { - SetListenerType(ESysProxyType.ForcedClear); - } private void menuKeepNothing_Click(object sender, EventArgs e) { SetListenerType(ESysProxyType.Unchanged); diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index ad43b0db..b8501535 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -226,7 +226,7 @@ tsbCheckUpdateN - Only open Http proxy and do nothing + Do not change system proxy System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -585,7 +585,7 @@ 265, 142 - 411, 22 + 262, 22 $this @@ -1103,7 +1103,7 @@ Magenta - 411, 22 + 262, 22 355, 22 @@ -1148,7 +1148,7 @@ Vertical - 411, 22 + 262, 22 355, 22 @@ -1174,6 +1174,9 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Clear system proxy + 355, 22 @@ -1217,7 +1220,7 @@ notifyMain - Open Http proxy and set the system proxy (global mode) + Set system proxy (global mode) System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -1415,9 +1418,6 @@ 228, 18 - - zh-Hans - True diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx index 31c2ed6a..9af1841a 100644 --- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -312,11 +312,11 @@ ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - + 228, 22 - - 不改变系统代理 + + 清除系统代理 228, 22 @@ -324,11 +324,11 @@ 自动配置系统代理(全局模式) - + 228, 22 - - 清除系统代理 + + 不改变系统代理 195, 22 @@ -441,19 +441,19 @@ 重启服务 - 180, 22 + 135, 22 v2rayN - 180, 22 + 135, 22 v2fly-Core - 180, 22 + 135, 22 Xray-Core diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs index 27a61a74..13e23b02 100644 --- a/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs @@ -69,6 +69,8 @@ this.txtKcpmtu = new System.Windows.Forms.TextBox(); this.label6 = new System.Windows.Forms.Label(); this.tabPage7 = new System.Windows.Forms.TabPage(); + this.cmbCoreType = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); this.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox(); this.cbFreshrate = new System.Windows.Forms.ComboBox(); this.lbFreshrate = new System.Windows.Forms.Label(); @@ -89,31 +91,32 @@ // // btnClose // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnClose.Name = "btnClose"; this.btnClose.UseVisualStyleBackColor = true; this.btnClose.Click += new System.EventHandler(this.btnClose_Click); // // tabControl1 // + resources.ApplyResources(this.tabControl1, "tabControl1"); this.tabControl1.Controls.Add(this.tabPage1); this.tabControl1.Controls.Add(this.tabPage2); this.tabControl1.Controls.Add(this.tabPage6); this.tabControl1.Controls.Add(this.tabPage7); - resources.ApplyResources(this.tabControl1, "tabControl1"); this.tabControl1.Name = "tabControl1"; this.tabControl1.SelectedIndex = 0; // // tabPage1 // - this.tabPage1.Controls.Add(this.groupBox1); resources.ApplyResources(this.tabPage1, "tabPage1"); + this.tabPage1.Controls.Add(this.groupBox1); this.tabPage1.Name = "tabPage1"; this.tabPage1.UseVisualStyleBackColor = true; // // groupBox1 // + resources.ApplyResources(this.groupBox1, "groupBox1"); this.groupBox1.Controls.Add(this.chkdefAllowInsecure); this.groupBox1.Controls.Add(this.chksniffingEnabled2); this.groupBox1.Controls.Add(this.chksniffingEnabled); @@ -131,7 +134,6 @@ this.groupBox1.Controls.Add(this.label5); this.groupBox1.Controls.Add(this.txtlocalPort); this.groupBox1.Controls.Add(this.label2); - resources.ApplyResources(this.groupBox1, "groupBox1"); this.groupBox1.Name = "groupBox1"; this.groupBox1.TabStop = false; // @@ -174,12 +176,12 @@ // // cmbprotocol2 // + resources.ApplyResources(this.cmbprotocol2, "cmbprotocol2"); this.cmbprotocol2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmbprotocol2.FormattingEnabled = true; this.cmbprotocol2.Items.AddRange(new object[] { resources.GetString("cmbprotocol2.Items"), resources.GetString("cmbprotocol2.Items1")}); - resources.ApplyResources(this.cmbprotocol2, "cmbprotocol2"); this.cmbprotocol2.Name = "cmbprotocol2"; // // label3 @@ -194,8 +196,8 @@ // // cmbprotocol // - this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; resources.ApplyResources(this.cmbprotocol, "cmbprotocol"); + this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmbprotocol.FormattingEnabled = true; this.cmbprotocol.Items.AddRange(new object[] { resources.GetString("cmbprotocol.Items"), @@ -221,6 +223,7 @@ // // cmbloglevel // + resources.ApplyResources(this.cmbloglevel, "cmbloglevel"); this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmbloglevel.FormattingEnabled = true; this.cmbloglevel.Items.AddRange(new object[] { @@ -229,7 +232,6 @@ resources.GetString("cmbloglevel.Items2"), resources.GetString("cmbloglevel.Items3"), resources.GetString("cmbloglevel.Items4")}); - resources.ApplyResources(this.cmbloglevel, "cmbloglevel"); this.cmbloglevel.Name = "cmbloglevel"; // // label5 @@ -249,10 +251,10 @@ // // tabPage2 // + resources.ApplyResources(this.tabPage2, "tabPage2"); this.tabPage2.Controls.Add(this.linkDnsObjectDoc); this.tabPage2.Controls.Add(this.txtremoteDNS); this.tabPage2.Controls.Add(this.label14); - resources.ApplyResources(this.tabPage2, "tabPage2"); this.tabPage2.Name = "tabPage2"; this.tabPage2.UseVisualStyleBackColor = true; // @@ -274,6 +276,7 @@ // // tabPage6 // + resources.ApplyResources(this.tabPage6, "tabPage6"); this.tabPage6.Controls.Add(this.chkKcpcongestion); this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize); this.tabPage6.Controls.Add(this.label10); @@ -287,7 +290,6 @@ this.tabPage6.Controls.Add(this.label7); this.tabPage6.Controls.Add(this.txtKcpmtu); this.tabPage6.Controls.Add(this.label6); - resources.ApplyResources(this.tabPage6, "tabPage6"); this.tabPage6.Name = "tabPage6"; this.tabPage6.UseVisualStyleBackColor = true; // @@ -359,16 +361,33 @@ // // tabPage7 // + resources.ApplyResources(this.tabPage7, "tabPage7"); + this.tabPage7.Controls.Add(this.cmbCoreType); + this.tabPage7.Controls.Add(this.label4); this.tabPage7.Controls.Add(this.chkKeepOlderDedupl); this.tabPage7.Controls.Add(this.cbFreshrate); this.tabPage7.Controls.Add(this.lbFreshrate); this.tabPage7.Controls.Add(this.chkEnableStatistics); this.tabPage7.Controls.Add(this.chkAllowLANConn); this.tabPage7.Controls.Add(this.chkAutoRun); - resources.ApplyResources(this.tabPage7, "tabPage7"); this.tabPage7.Name = "tabPage7"; this.tabPage7.UseVisualStyleBackColor = true; // + // cmbCoreType + // + resources.ApplyResources(this.cmbCoreType, "cmbCoreType"); + this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbCoreType.FormattingEnabled = true; + this.cmbCoreType.Items.AddRange(new object[] { + resources.GetString("cmbCoreType.Items"), + resources.GetString("cmbCoreType.Items1")}); + this.cmbCoreType.Name = "cmbCoreType"; + // + // label4 + // + resources.ApplyResources(this.label4, "label4"); + this.label4.Name = "label4"; + // // chkKeepOlderDedupl // resources.ApplyResources(this.chkKeepOlderDedupl, "chkKeepOlderDedupl"); @@ -377,9 +396,9 @@ // // cbFreshrate // + resources.ApplyResources(this.cbFreshrate, "cbFreshrate"); this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cbFreshrate.FormattingEnabled = true; - resources.ApplyResources(this.cbFreshrate, "cbFreshrate"); this.cbFreshrate.Name = "cbFreshrate"; // // lbFreshrate @@ -407,9 +426,9 @@ // // panel2 // + resources.ApplyResources(this.panel2, "panel2"); this.panel2.Controls.Add(this.btnClose); this.panel2.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel2, "panel2"); this.panel2.Name = "panel2"; // // btnOK @@ -501,5 +520,7 @@ private System.Windows.Forms.LinkLabel linkDnsObjectDoc; private System.Windows.Forms.TextBox txtremoteDNS; private System.Windows.Forms.Label label14; + private System.Windows.Forms.ComboBox cmbCoreType; + private System.Windows.Forms.Label label4; } } \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.cs b/v2rayN/v2rayN/Forms/OptionSettingForm.cs index d1262268..d26843a6 100644 --- a/v2rayN/v2rayN/Forms/OptionSettingForm.cs +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.cs @@ -120,6 +120,7 @@ namespace v2rayN.Forms break; } + cmbCoreType.SelectedIndex = (int)config.coreType; } private void btnOK_Click(object sender, EventArgs e) { @@ -284,6 +285,7 @@ namespace v2rayN.Forms config.statisticsFreshRate = (int)cbFreshrate.SelectedValue; config.keepOlderDedupl = chkKeepOlderDedupl.Checked; + config.coreType = (ECoreType)cmbCoreType.SelectedIndex; return 0; } diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.resx b/v2rayN/v2rayN/Forms/OptionSettingForm.resx index f0757e7d..05feb4af 100644 --- a/v2rayN/v2rayN/Forms/OptionSettingForm.resx +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.resx @@ -117,1310 +117,1385 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 355, 16 - - - 75, 23 - - - 7 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - True - - - - NoControl - - - 15, 192 - - - 102, 16 - - - 35 - - - allowInsecure - - - chkdefAllowInsecure - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - True - - - NoControl - - - 468, 60 - - - 120, 16 - - - 32 - - - Turn on Sniffing - - - False - - - chksniffingEnabled2 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - True - - - NoControl - - - 468, 27 - - - 120, 16 - - - 31 - - - Turn on Sniffing - - - chksniffingEnabled - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - True - - - 15, 129 - - - 174, 16 - - - 20 - - - Turn on Mux Multiplexing - - - chkmuxEnabled - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 3 - True - - 15, 63 + + Xray_core - - 120, 16 + + 11 - - 19 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - listening port 2 + + Keep older when deduplication - - False + + 1 - - chkAllowIn2 + + Record local logs - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 12 - + + + 4, 22 + + + txtKcpwriteBufferSize + + groupBox1 - + 4 - - True - - - 369, 62 - - - 84, 16 - - - 18 - - - Enable UDP - - - False - - - chkudpEnabled2 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - socks - - - http - - - 257, 60 - - - 97, 20 - - - 17 - - - False - - - cmbprotocol2 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 6 - - - True - - - 206, 64 - - - 53, 12 - - - 16 - - - protocol - False - - label3 + + 14 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 groupBox1 - - 7 + + 9 - - 124, 60 - - - 78, 21 - - - 14 - - - False - - - txtlocalPort2 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + groupBox1 - - 8 + + 662, 523 - - False + + 35 - - socks + + 1 - - http + + 468, 60 - - 257, 25 + + + Top - - 97, 20 - - - 12 + + 102, 16 cmbprotocol - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 6 - + + 14 + + + 30, 87 + + + 111, 100 + + + True + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 84, 16 + + + 40 + + + True + + + 120, 16 + + + True + + + tti + + + tabPage6 + + + chkdefAllowInsecure + + + 7 + + + tabPage7 + + + 12 + + + http + + + 7 + + + label5 + + + 648, 421 + + + 206, 64 + + + 95, 12 + + + tabPage6 + + + 15, 63 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + Enable UDP + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + &Cancel + + + label10 + + groupBox1 - - 9 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 662, 10 + + + Settings + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label4 + + + 236, 66 + + + txtKcpmtu + + + lbFreshrate + + + 12 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label11 + + + 29 + + + 8 + + + 0, 10 + + + 58, 20 + + + Support DnsObject + + + tabPage6 + + + False + + + groupBox1 + + + $this + + + 3 + + + 6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + tabPage7 + + + tabPage6 + + + Bottom + + + 576, 16 + + + 18 True - - 206, 29 + + 39 - - 53, 12 + + tabPage6 - - 11 + + congestion - - protocol + + NoControl - - label1 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 89, 12 - + + NoControl + + + 0 + + + tabPage7 + + + v2rayN settings + + + 16 + + groupBox1 10 - + + 32 + + + 6, 12 + + + groupBox1 + + + 1 + + + True + + + 8 + + + 198, 16 + + + Automatically start at system startup + + + Fill + + + txtKcptti + + + 2 + + + Turn on Sniffing + + + 281, 12 + + + tabPage7 + + + 2 + + + 3, 3, 3, 3 + + + 3 + + + 662, 453 + + + 33, 29 + + + 1 + + + 124, 60 + + + 78, 21 + + + Log level + + + tabControl1 + + + 59, 12 + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + warning + + + tabPage2 + + + panel2 + + + 11 + + + Statistics freshrate + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + 120, 16 + + + 89, 12 + + + btnOK + + + 18, 66 + + + 20, 143 + + + 15 + + + True + + + 4, 4, 4, 4 + + + tabPage6 + + + 5 + + + Turn on Sniffing + + + groupBox1 + + + 18, 28 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 20 + + + 29 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 14 + + + 5 + + + Core Type + + + True + + + chksniffingEnabled + + + 2 + + + 174, 16 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 18, 104 + + + tabPage2 + + + mtu + + + socks + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 30 + + + 53, 12 + + + 13 + + + label8 + + + 468, 27 + + + 236, 28 + + + chkAutoRun + + + 94, 21 + + + 345, 62 + + + 11 + + + 15, 129 + + + chkudpEnabled + + + 0 + + + True + + + 8, 17 + + + tabPage1 + + + tabPage6 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 84, 16 + + + 15 + + + True + + + False + + + label7 + + + txtlocalPort + + + info + + + 19 + + + readBufferSize + + + tabPage6 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + btnClose + + + 124, 25 + + + protocol + + + 23, 12 + + + 638, 356 + + + socks + + + 2 + + + 3, 3 + + + chkAllowLANConn + + + 84, 16 + + + tabControl1 + + + True + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + 1 + + + 10 + + + 369, 62 + + + 161, 84 + + + 9 + + + groupBox1 + + + 33, 141 + + + NoControl + + + chkEnableStatistics + + + 4 + + + 355, 16 + + + 53, 12 + + + 193, 162 + + True 369, 27 - - 84, 16 - - - 10 - - - Enable UDP - - - chkudpEnabled - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 11 - - - True - - - 15, 160 - - - 126, 16 - - - 9 - - - Record local logs - - - chklogEnabled - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 12 - - - debug - - - info - - - warning - - - error - - - none - - - 257, 158 - - - 97, 20 - - - 6 - - - cmbloglevel - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 13 - - - True - - - 193, 162 - - - 59, 12 - - - 8 - - - Log level - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 14 - - - 124, 25 - - - 78, 21 - - - 3 - - - txtlocalPort - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 15 - - - True - - - 33, 29 - - - 89, 12 - - - 2 - - - Listening port - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 16 - - - Fill - - - 3, 3 - - - 648, 421 - - - 6 - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage1 - - - 0 - - - 4, 22 - - - 3, 3, 3, 3 - - - 654, 427 - - - 0 - - - Core: basic settings - - - tabPage1 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 0 - - - True - - - NoControl - - - 342, 17 - - - 0, 0, 0, 0 - - - 107, 12 - - - 40 - - - Support DnsObject - - - linkDnsObjectDoc - - - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage2 - - - 0 - - - 8, 41 - - - True - - - 638, 356 - - - 39 - - - txtremoteDNS - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage2 - - - 1 - - - True - - - NoControl - - - 8, 17 - - - 281, 12 - - - 38 - - - Custom DNS (multiple, separated by commas (,)) - - - label14 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage2 - - - 2 - - - 4, 22 - - - 654, 427 - - - 4 - - - Core: DNS settings - - - tabPage2 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 1 - - - True - - - 20, 143 - - - 84, 16 - - - 20 - - - congestion - - - chkKcpcongestion - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 0 - - - 345, 100 - - - 94, 21 - - - 15 - - - txtKcpwriteBufferSize - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 1 - - - True - - - 236, 104 - - - 95, 12 - - - 14 - - - writeBufferSize - - - label10 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 2 - - - 111, 100 - - - 94, 21 - - - 13 - - - txtKcpreadBufferSize - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 3 - - - True - - - 18, 104 - - - 89, 12 - - - 12 - - - readBufferSize - - - label11 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 4 - - - 345, 62 - - - 94, 21 - - - 11 - - - txtKcpdownlinkCapacity - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 5 - - - True - - - 236, 66 - - - 101, 12 - - - 10 - - - downlinkCapacity - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 6 - - - 111, 62 - - - 94, 21 - - - 9 - - - txtKcpuplinkCapacity - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabPage6 - - - 7 - - - True - - - 18, 66 - - - 89, 12 - - - 8 - - - uplinkCapacity - - - label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 8 - - - 345, 24 - - - 94, 21 - - - 7 - - - txtKcptti - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 9 - - - True - - - 236, 28 - - - 23, 12 - - - 6 - - - tti - - - label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 10 - - - 111, 24 - - - 94, 21 - - - 5 - - - txtKcpmtu - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - tabPage6 - - 11 + + label2 - - True - - - 18, 28 - - - 23, 12 - - - 4 - - - mtu - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 12 - - - 4, 22 - - - 3, 3, 3, 3 - - + 654, 427 - - 2 - - - Core: KCP settings - - - tabPage6 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 2 - - - True - - - NoControl - - - 15, 110 - - - 198, 16 - - - 33 - - - Keep older when deduplication - - - chkKeepOlderDedupl - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage7 - - - 0 - - - 161, 84 - - - 58, 20 - - - 32 - - - cbFreshrate - - + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabPage7 + + 9 - - 1 + + 101, 12 - - True + + 5 - - NoControl + + 12 - - 30, 87 + + 20 - - 125, 12 - - - 30 - - - Statistics freshrate - - - lbFreshrate - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage7 - - - 2 - - - True - - - NoControl - - - 15, 62 - - - 576, 16 - - - 29 + + allowInsecure Enable Statistics (Realtime netspeed and traffic records. Require restart the v2rayN client) - - chkEnableStatistics + + $this - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage7 - - - 3 - - - True - - - 15, 38 - - - 204, 16 - - - 29 - - - Allow connections from the LAN - - - chkAllowLANConn - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage7 - - + 4 - - True + + Listening port - - 15, 16 + + Fill - - 246, 16 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 23 + + False - - Automatically start at system startup + + 257, 60 - - chkAutoRun - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage7 - - - 5 - - - 4, 22 - - - 3, 3, 3, 3 - - - 654, 427 - - - 3 - - - v2rayN settings - - - tabPage7 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 tabControl1 - - 3 + + True - - Fill + + 34 - - 0, 10 + + cmbprotocol2 - - 662, 453 + + chkKeepOlderDedupl - - 10 + + True - - tabControl1 + + 16 - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True - - $this + + True - + + True + + + chkKcpcongestion + + + Core: basic settings + + 0 - - 267, 16 + + 257, 25 - - 75, 23 + + tabPage2 - - 8 + + tabControl1 - - &OK + + listening port 2 - - btnOK + + 97, 20 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + chkAllowIn2 - - panel2 + + 15, 38 - - 1 + + True - - Bottom + + 15, 160 - - 0, 463 + + 38 - - 662, 60 + + 33 - - 11 + + 4, 22 - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Top - - - 0, 0 - - - 662, 10 + + v2fly_core 9 - - panel1 + + label1 + + + Core: KCP settings + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + error + + + 59, 12 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 8 + + + 120, 16 + + + 75, 23 + + + txtlocalPort2 + + + True + + + 246, 16 + + + True + + + 654, 427 + + + 10 + + + False + + + 206, 29 + + + downlinkCapacity + + + chkudpEnabled2 + + + Allow connections from the LAN + + + tabPage1 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 2 + + + panel2 + + + 3 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + linkDnsObjectDoc + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 125, 12 + + + txtKcpreadBufferSize + + + none + + + groupBox1 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6 + + + OptionSettingForm + + + 2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 15, 62 + + + 111, 62 + + + 7 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + 13 + + + 97, 20 + + + 0 + + + 8 + + + 78, 21 + + + tabPage7 + + + tabPage7 + + + True + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 23, 12 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 345, 100 + + + 94, 21 + + + NoControl + + + 654, 427 + + + 10 + + + 204, 16 + + + 17 + + + 23 + + + 94, 21 + + + 6 + + + 0, 463 + + + groupBox1 + + + 3 + + + http + + + 0 + + + 97, 20 + + + tabPage6 + + + tabPage6 + + + 7 + + + False + + + 257, 158 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + &OK + + + 10 + + + 1 + + + 94, 21 + + + txtKcpuplinkCapacity + + + tabPage2 + + + chklogEnabled + + + chksniffingEnabled2 + + + tabPage7 + + + 4, 22 + + + $this + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 4, 22 + + + groupBox1 + + + NoControl + + + 6 + + + protocol + + + tabPage7 + + + 15, 16 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + 0 + + + 8 + + + txtremoteDNS + + + True + + + True + + + writeBufferSize + + + 11 System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + 89, 12 - - 2 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 31 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + Core: DNS settings + + + groupBox1 + + + 32 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + 345, 24 + + + tabPage7 + + + cbFreshrate + + + 236, 104 + + + 4 + + + NoControl + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 94, 21 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 8, 41 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0, 0, 0, 0 + + + uplinkCapacity + + + txtKcpdownlinkCapacity + + + 35 + + + 6 + + + 3 + + + 3, 3, 3, 3 + + + 107, 12 + + + 0 + + + 15, 192 + + + tabPage6 + + + debug + + + chkmuxEnabled + + + label3 + + + tabPage6 + + + False + + + 15, 110 + + + 105, 137 + + + 0, 0 + + + Enable UDP + + + cmbCoreType + + + 3, 3, 3, 3 + + + groupBox1 + + + 126, 16 + + + 267, 16 + + + 75, 23 + + + groupBox1 + + + NoControl + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 342, 17 + + + 94, 21 + + + 97, 20 + + + 3 + + + Custom DNS (multiple, separated by commas (,)) + + + 654, 427 + + + 11 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + NoControl + + + panel2 + + + 7 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Turn on Mux Multiplexing + + + cmbloglevel + + + label6 + + + 111, 24 + + + 4 + + + label9 + + + 662, 60 + + + label14 True @@ -1428,22 +1503,4 @@ zh-Hans - - 6, 12 - - - 662, 523 - - - 4, 4, 4, 4 - - - Settings - - - OptionSettingForm - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx index 0618fb5f..bfab7ce2 100644 --- a/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx @@ -121,12 +121,6 @@ 取消(&C) - - 161, 12 - - - 支持填写DnsObject,JSON格式 - 336, 16 @@ -145,12 +139,6 @@ 开启流量探测 - - 191, 12 - - - 自定义DNS(可多个,用逗号(,)隔开) - 开启Mux多路复用(默认开启) @@ -211,6 +199,18 @@ Core:基础设置 + + 161, 12 + + + 支持填写DnsObject,JSON格式 + + + 191, 12 + + + 自定义DNS(可多个,用逗号(,)隔开) + 654, 443 @@ -223,6 +223,12 @@ Core:KCP设置 + + 53, 12 + + + Core类型 + 156, 16 diff --git a/v2rayN/v2rayN/Forms/RoutingSettingControl.Designer.cs b/v2rayN/v2rayN/Forms/RoutingSettingControl.Designer.cs deleted file mode 100644 index 912b2ab4..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSettingControl.Designer.cs +++ /dev/null @@ -1,135 +0,0 @@ -namespace v2rayN.Forms -{ - partial class RoutingSettingControl - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region 组件设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要修改 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSettingControl)); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.btnExpand = new System.Windows.Forms.Button(); - this.label4 = new System.Windows.Forms.Label(); - this.cmbOutboundTag = new System.Windows.Forms.ComboBox(); - this.btnRemove = new System.Windows.Forms.Button(); - this.txtUserRule = new System.Windows.Forms.TextBox(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.groupBox2.SuspendLayout(); - this.SuspendLayout(); - // - // groupBox2 - // - resources.ApplyResources(this.groupBox2, "groupBox2"); - this.groupBox2.Controls.Add(this.btnExpand); - this.groupBox2.Controls.Add(this.label4); - this.groupBox2.Controls.Add(this.cmbOutboundTag); - this.groupBox2.Controls.Add(this.btnRemove); - this.groupBox2.Controls.Add(this.txtUserRule); - this.groupBox2.Controls.Add(this.txtRemarks); - this.groupBox2.Controls.Add(this.label2); - this.groupBox2.Controls.Add(this.label3); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.TabStop = false; - // - // btnExpand - // - resources.ApplyResources(this.btnExpand, "btnExpand"); - this.btnExpand.Name = "btnExpand"; - this.btnExpand.UseVisualStyleBackColor = true; - this.btnExpand.Click += new System.EventHandler(this.btnExpand_Click); - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // cmbOutboundTag - // - resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag"); - this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbOutboundTag.FormattingEnabled = true; - this.cmbOutboundTag.Items.AddRange(new object[] { - resources.GetString("cmbOutboundTag.Items"), - resources.GetString("cmbOutboundTag.Items1"), - resources.GetString("cmbOutboundTag.Items2")}); - this.cmbOutboundTag.Name = "cmbOutboundTag"; - // - // btnRemove - // - resources.ApplyResources(this.btnRemove, "btnRemove"); - this.btnRemove.Name = "btnRemove"; - this.btnRemove.UseVisualStyleBackColor = true; - this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click); - // - // txtUserRule - // - resources.ApplyResources(this.txtUserRule, "txtUserRule"); - this.txtUserRule.Name = "txtUserRule"; - this.txtUserRule.Leave += new System.EventHandler(this.txtRemarks_Leave); - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - this.txtRemarks.Leave += new System.EventHandler(this.txtRemarks_Leave); - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // RoutingSettingControl - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.groupBox2); - this.Name = "RoutingSettingControl"; - this.Load += new System.EventHandler(this.RoutingSettingControl_Load); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.TextBox txtUserRule; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Button btnRemove; - private System.Windows.Forms.ComboBox cmbOutboundTag; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.Button btnExpand; - } -} diff --git a/v2rayN/v2rayN/Forms/RoutingSettingControl.cs b/v2rayN/v2rayN/Forms/RoutingSettingControl.cs deleted file mode 100644 index 33f44027..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSettingControl.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Base; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class RoutingSettingControl : UserControl - { - public event ChangeEventHandler OnButtonClicked; - - - public RoutingItem routingItem - { - get; set; - } - - public RoutingSettingControl() - { - InitializeComponent(); - } - - private void RoutingSettingControl_Load(object sender, EventArgs e) - { - BindingSub(); - } - - private void BindingSub() - { - if (routingItem != null) - { - txtRemarks.Text = routingItem.remarks.ToString(); - cmbOutboundTag.Text = routingItem.outboundTag; - txtUserRule.Text = Utils.List2String(routingItem.userRules, true); - } - } - private void EndBindingSub() - { - if (routingItem != null) - { - routingItem.remarks = txtRemarks.Text.TrimEx(); - routingItem.outboundTag = cmbOutboundTag.Text; - routingItem.userRules = Utils.String2List(txtUserRule.Text); - } - } - private void txtRemarks_Leave(object sender, EventArgs e) - { - EndBindingSub(); - } - - private void btnRemove_Click(object sender, EventArgs e) - { - if (routingItem != null) - { - routingItem.remarks = string.Empty; - } - - OnButtonClicked?.Invoke(sender, e); - } - - private void btnExpand_Click(object sender, EventArgs e) - { - if (this.Height > 200) - { - this.Height = 160; - } - else - { - this.Height = 500; - } - } - } -} diff --git a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.Designer.cs b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.Designer.cs new file mode 100644 index 00000000..4cf4fe18 --- /dev/null +++ b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.Designer.cs @@ -0,0 +1,211 @@ +namespace v2rayN.Forms +{ + partial class RoutingSettingDetailsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSettingDetailsForm)); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.txtPort = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.labRoutingTips = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.cmbOutboundTag = new System.Windows.Forms.ComboBox(); + this.txtRemarks = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.panel4 = new System.Windows.Forms.Panel(); + this.btnClose = new System.Windows.Forms.Button(); + this.btnOK = new System.Windows.Forms.Button(); + this.panel2 = new System.Windows.Forms.Panel(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.txtIP = new System.Windows.Forms.TextBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.txtDomain = new System.Windows.Forms.TextBox(); + this.panel3.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel2.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Name = "panel1"; + // + // panel3 + // + resources.ApplyResources(this.panel3, "panel3"); + this.panel3.Controls.Add(this.txtPort); + this.panel3.Controls.Add(this.label1); + this.panel3.Controls.Add(this.labRoutingTips); + this.panel3.Controls.Add(this.label4); + this.panel3.Controls.Add(this.cmbOutboundTag); + this.panel3.Controls.Add(this.txtRemarks); + this.panel3.Controls.Add(this.label2); + this.panel3.Name = "panel3"; + // + // txtPort + // + resources.ApplyResources(this.txtPort, "txtPort"); + this.txtPort.Name = "txtPort"; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // labRoutingTips + // + resources.ApplyResources(this.labRoutingTips, "labRoutingTips"); + this.labRoutingTips.ForeColor = System.Drawing.Color.Brown; + this.labRoutingTips.Name = "labRoutingTips"; + // + // label4 + // + resources.ApplyResources(this.label4, "label4"); + this.label4.Name = "label4"; + // + // cmbOutboundTag + // + resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag"); + this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbOutboundTag.FormattingEnabled = true; + this.cmbOutboundTag.Items.AddRange(new object[] { + resources.GetString("cmbOutboundTag.Items"), + resources.GetString("cmbOutboundTag.Items1"), + resources.GetString("cmbOutboundTag.Items2")}); + this.cmbOutboundTag.Name = "cmbOutboundTag"; + // + // txtRemarks + // + resources.ApplyResources(this.txtRemarks, "txtRemarks"); + this.txtRemarks.Name = "txtRemarks"; + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.Name = "label2"; + // + // panel4 + // + resources.ApplyResources(this.panel4, "panel4"); + this.panel4.Controls.Add(this.btnClose); + this.panel4.Controls.Add(this.btnOK); + this.panel4.Name = "panel4"; + // + // btnClose + // + resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnClose.Name = "btnClose"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // btnOK + // + resources.ApplyResources(this.btnOK, "btnOK"); + this.btnOK.Name = "btnOK"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // panel2 + // + resources.ApplyResources(this.panel2, "panel2"); + this.panel2.Controls.Add(this.groupBox2); + this.panel2.Controls.Add(this.groupBox1); + this.panel2.Name = "panel2"; + // + // groupBox2 + // + resources.ApplyResources(this.groupBox2, "groupBox2"); + this.groupBox2.Controls.Add(this.txtIP); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.TabStop = false; + // + // txtIP + // + resources.ApplyResources(this.txtIP, "txtIP"); + this.txtIP.Name = "txtIP"; + // + // groupBox1 + // + resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Controls.Add(this.txtDomain); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.TabStop = false; + // + // txtDomain + // + resources.ApplyResources(this.txtDomain, "txtDomain"); + this.txtDomain.Name = "txtDomain"; + // + // RoutingSettingDetailsForm + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnClose; + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel4); + this.Controls.Add(this.panel3); + this.Controls.Add(this.panel1); + this.Name = "RoutingSettingDetailsForm"; + this.Load += new System.EventHandler(this.RoutingSettingDetailsForm_Load); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.panel4.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox cmbOutboundTag; + private System.Windows.Forms.TextBox txtRemarks; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Button btnClose; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TextBox txtDomain; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox txtIP; + private System.Windows.Forms.Label labRoutingTips; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtPort; + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.cs b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.cs new file mode 100644 index 00000000..09b5a39e --- /dev/null +++ b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.cs @@ -0,0 +1,86 @@ +using System; +using System.Windows.Forms; +using v2rayN.Base; +using v2rayN.Handler; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class RoutingSettingDetailsForm : BaseForm + { + public int EditIndex + { + get; set; + } + protected RulesItem routingItem = null; + + public RoutingSettingDetailsForm() + { + InitializeComponent(); + } + + private void RoutingSettingDetailsForm_Load(object sender, EventArgs e) + { + if (EditIndex >= 0) + { + routingItem = config.rules[EditIndex]; + BindingData(); + } + else + { + routingItem = new RulesItem(); + ClearBind(); + } + } + + private void EndBindingData() + { + if (routingItem != null) + { + routingItem.remarks = txtRemarks.Text.TrimEx(); + routingItem.port = txtPort.Text.TrimEx(); + routingItem.outboundTag = cmbOutboundTag.Text; + routingItem.domain = Utils.String2List(txtDomain.Text); + routingItem.ip = Utils.String2List(txtIP.Text); + } + } + private void BindingData() + { + if (routingItem != null) + { + txtRemarks.Text = routingItem.remarks ?? string.Empty; + txtPort.Text = routingItem.port ?? string.Empty; + cmbOutboundTag.Text = routingItem.outboundTag; + txtDomain.Text = Utils.List2String(routingItem.domain, true); + txtIP.Text = Utils.List2String(routingItem.ip, true); + } + } + private void ClearBind() + { + txtRemarks.Text = string.Empty; + txtPort.Text = string.Empty; + cmbOutboundTag.Text = Global.agentTag; + txtDomain.Text = string.Empty; + txtIP.Text = string.Empty; + } + private void btnOK_Click(object sender, EventArgs e) + { + EndBindingData(); + if (ConfigHandler.AddRoutingRule(ref config, routingItem, EditIndex) == 0) + { + this.DialogResult = DialogResult.OK; + } + else + { + UI.ShowWarning(UIRes.I18N("OperationFailed")); + } + + this.DialogResult = DialogResult.OK; + } + + private void btnClose_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + } +} diff --git a/v2rayN/v2rayN/Forms/RoutingSettingControl.resx b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx similarity index 53% rename from v2rayN/v2rayN/Forms/RoutingSettingControl.resx rename to v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx index 656bfa7b..8153fa31 100644 --- a/v2rayN/v2rayN/Forms/RoutingSettingControl.resx +++ b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx @@ -117,274 +117,472 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 733, 164 - - - Rule - - - 119, 20 - - - direct - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 127, 50 - - - txtRemarks + + panel2 - - 24 - - - 23 - - - 4 - - - RoutingSettingControl - - - Expand - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - 28 + 32 - - 5 + + 30 + + + 31 proxy - - 77, 12 - - - 2 - - - 544, 21 - - - 6, 12 - - - label3 - - - 127, 21 - - - True - - - 0 - - - btnExpand - - - 12, 87 - - - txtUserRule - - - True - - - 75, 23 - - - groupBox2 - - + + Fill - + + panel1 + + + 3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + NoControl System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 25 + + True - - groupBox2 - - - 11 + + Left NoControl - - 47, 12 + + 0 - - btnRemove + + + 29, 12 - - 0, 0 + + panel2 - - 29 + + RoutingSettingDetailsForm - - label4 + + Fill - - NoControl - - - Out Tag - - - block - - - Remove - - - 3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - groupBox2 - - + 1 - - groupBox2 + + Fill - - groupBox2 + + 411, 15 - - 588, 105 + + 119, 20 - - True + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Bottom - - groupBox2 + + Top - + + 0 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 344, 417 + + + $this + + + 504, 15 + + + groupBox1 + + NoControl - - label2 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 733, 164 - 6 - - Top, Bottom, Left, Right + + label1 - - 362, 21 + + 742, 437 - - cmbOutboundTag + + 0, 0 + + + 4 + + + panel3 + + + True + + + panel3 + + + 3 + + + panel4 + + + 5 + + + 19, 43 + + + 25 + + + 3, 17 + + + panel3 + + + 274, 20 + + + labRoutingTips + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 491, 20 + + + groupBox1 + + + 1 + + + RoutingSettingDetailsForm + + + 166, 21 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 544, 16 + + + groupBox2 + + + 3 + + + 1 + + + 386, 417 + + + panel3 + + + 392, 0 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + panel4 + + + NoControl + + + Top + + + 598, 16 + + + $this + + + groupBox2 + + + panel3 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + txtPort + + + panel4 + + + 3, 17 + + + 1 + + + 742, 10 + + + 0, 0 + + + 24 + + + label4 + + + &OK + + + 75, 23 + + + btnClose + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 34 + + + 29 + + + block + + + direct + + + 0 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + btnOK + + + 2 + + + 110, 21 + + + 4 + + + 7 + + + 0 + + + 11 + + + 0 + + + panel3 + + + 8 + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + 0, 10 Remarks - + + Fill + + + 742, 60 + + + 0, 79 + + + $this + + + 47, 12 + + + &Cancel + + + *Set the rules, separated by commas (,); support Domain (pure string / regular / subdomain) and IP + + + 742, 69 + + + True + + + 6, 12 + + + Port + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + txtIP + + 0 - + + label2 + + + cmbOutboundTag + + True - 12, 25 + 19, 20 - + + NoControl + + + 742, 576 + + + 10 + + + 392, 437 + + 75, 23 - - 301, 26 + + NoControl + + + True + + + 4 + + + 5 + + + txtDomain + + + 84, 16 + + + IP + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0, 516 + + + 33 47, 12 - - 162, 21 + + 350, 437 - - 10 + + panel3 - - Domain or IP + + Domain - - $this + + txtRemarks - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 347, 16 - - System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Out Tag - - 0 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 640, 21 - - - 7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 10 + + 35 True - - zh-Hans - \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSettingControl.zh-Hans.resx b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx similarity index 85% rename from v2rayN/v2rayN/Forms/RoutingSettingControl.zh-Hans.resx rename to v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx index 94e70d37..c080de59 100644 --- a/v2rayN/v2rayN/Forms/RoutingSettingControl.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx @@ -117,47 +117,29 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + *设置的路由规则,用逗号(,)分隔 + - - 526, 20 - - - 扩大 - - 53, 12 + 71, 12 - 出口标签 - - - 619, 20 - - - 移除 - - - 567, 104 + OutboundTag 29, 12 - 备注 + 别名 - - 53, 12 + + 取消(&C) - - 域名或IP + + 确定(&O) - - 709, 160 - - - 规则 - - - 709, 160 + + 路由规则详情设置 \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs index 5a87e09a..8261890c 100644 --- a/v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs @@ -28,19 +28,39 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSettingForm)); this.btnClose = new System.Windows.Forms.Button(); - this.panCon = new System.Windows.Forms.Panel(); this.panel2 = new System.Windows.Forms.Panel(); - this.btnAdd = new System.Windows.Forms.Button(); this.btnOK = new System.Windows.Forms.Button(); - this.btnSetDefRountingRule = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); - this.labRoutingTips = new System.Windows.Forms.Label(); this.linkLabelRoutingDoc = new System.Windows.Forms.LinkLabel(); this.cmbdomainStrategy = new System.Windows.Forms.ComboBox(); + this.lvRoutings = new v2rayN.Base.ListViewFlickerFree(); + this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components); + this.menuAdd = new System.Windows.Forms.ToolStripMenuItem(); + this.menuRemove = new System.Windows.Forms.ToolStripMenuItem(); + this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem(); + this.menuExportSelectedRules = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem(); + this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem(); + this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem(); + this.menuMoveBottom = new System.Windows.Forms.ToolStripMenuItem(); + this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.tabControl2 = new System.Windows.Forms.TabControl(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.menuServer = new System.Windows.Forms.MenuStrip(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.menuImportRulesFromPreset = new System.Windows.Forms.ToolStripMenuItem(); + this.menuImportRulesFromFile = new System.Windows.Forms.ToolStripMenuItem(); + this.menuImportRulesFromClipboard = new System.Windows.Forms.ToolStripMenuItem(); this.panel2.SuspendLayout(); this.panel1.SuspendLayout(); + this.cmsLv.SuspendLayout(); + this.tabControl2.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.menuServer.SuspendLayout(); this.SuspendLayout(); // // btnClose @@ -51,26 +71,13 @@ this.btnClose.UseVisualStyleBackColor = true; this.btnClose.Click += new System.EventHandler(this.btnClose_Click); // - // panCon - // - resources.ApplyResources(this.panCon, "panCon"); - this.panCon.Name = "panCon"; - // // panel2 // - this.panel2.Controls.Add(this.btnAdd); this.panel2.Controls.Add(this.btnClose); this.panel2.Controls.Add(this.btnOK); resources.ApplyResources(this.panel2, "panel2"); this.panel2.Name = "panel2"; // - // btnAdd - // - resources.ApplyResources(this.btnAdd, "btnAdd"); - this.btnAdd.Name = "btnAdd"; - this.btnAdd.UseVisualStyleBackColor = true; - this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); - // // btnOK // resources.ApplyResources(this.btnOK, "btnOK"); @@ -78,28 +85,13 @@ this.btnOK.UseVisualStyleBackColor = true; this.btnOK.Click += new System.EventHandler(this.btnOK_Click); // - // btnSetDefRountingRule - // - resources.ApplyResources(this.btnSetDefRountingRule, "btnSetDefRountingRule"); - this.btnSetDefRountingRule.Name = "btnSetDefRountingRule"; - this.btnSetDefRountingRule.UseVisualStyleBackColor = true; - this.btnSetDefRountingRule.Click += new System.EventHandler(this.btnSetDefRountingRule_Click); - // // panel1 // - this.panel1.Controls.Add(this.btnSetDefRountingRule); - this.panel1.Controls.Add(this.labRoutingTips); this.panel1.Controls.Add(this.linkLabelRoutingDoc); this.panel1.Controls.Add(this.cmbdomainStrategy); resources.ApplyResources(this.panel1, "panel1"); this.panel1.Name = "panel1"; // - // labRoutingTips - // - this.labRoutingTips.ForeColor = System.Drawing.Color.Brown; - resources.ApplyResources(this.labRoutingTips, "labRoutingTips"); - this.labRoutingTips.Name = "labRoutingTips"; - // // linkLabelRoutingDoc // resources.ApplyResources(this.linkLabelRoutingDoc, "linkLabelRoutingDoc"); @@ -118,21 +110,169 @@ resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy"); this.cmbdomainStrategy.Name = "cmbdomainStrategy"; // + // lvRoutings + // + this.lvRoutings.ContextMenuStrip = this.cmsLv; + resources.ApplyResources(this.lvRoutings, "lvRoutings"); + this.lvRoutings.FullRowSelect = true; + this.lvRoutings.GridLines = true; + this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lvRoutings.HideSelection = false; + this.lvRoutings.Items.AddRange(new System.Windows.Forms.ListViewItem[] { + ((System.Windows.Forms.ListViewItem)(resources.GetObject("lvRoutings.Items")))}); + this.lvRoutings.MultiSelect = false; + this.lvRoutings.Name = "lvRoutings"; + this.lvRoutings.UseCompatibleStateImageBehavior = false; + this.lvRoutings.View = System.Windows.Forms.View.Details; + this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick); + this.lvRoutings.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvRoutings_KeyDown); + // + // cmsLv + // + this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20); + this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuAdd, + this.menuRemove, + this.menuSelectAll, + this.menuExportSelectedRules, + this.toolStripSeparator3, + this.menuMoveTop, + this.menuMoveUp, + this.menuMoveDown, + this.menuMoveBottom}); + this.cmsLv.Name = "cmsLv"; + resources.ApplyResources(this.cmsLv, "cmsLv"); + // + // menuAdd + // + this.menuAdd.Name = "menuAdd"; + resources.ApplyResources(this.menuAdd, "menuAdd"); + this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click); + // + // menuRemove + // + this.menuRemove.Name = "menuRemove"; + resources.ApplyResources(this.menuRemove, "menuRemove"); + this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click); + // + // menuSelectAll + // + this.menuSelectAll.Name = "menuSelectAll"; + resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); + this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); + // + // menuExportSelectedRules + // + this.menuExportSelectedRules.Name = "menuExportSelectedRules"; + resources.ApplyResources(this.menuExportSelectedRules, "menuExportSelectedRules"); + this.menuExportSelectedRules.Click += new System.EventHandler(this.menuExportSelectedRules_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); + // + // menuMoveTop + // + this.menuMoveTop.Name = "menuMoveTop"; + resources.ApplyResources(this.menuMoveTop, "menuMoveTop"); + this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click); + // + // menuMoveUp + // + this.menuMoveUp.Name = "menuMoveUp"; + resources.ApplyResources(this.menuMoveUp, "menuMoveUp"); + this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click); + // + // menuMoveDown + // + this.menuMoveDown.Name = "menuMoveDown"; + resources.ApplyResources(this.menuMoveDown, "menuMoveDown"); + this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click); + // + // menuMoveBottom + // + this.menuMoveBottom.Name = "menuMoveBottom"; + resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom"); + this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click); + // + // MenuItem1 + // + this.MenuItem1.DropDown = this.cmsLv; + this.MenuItem1.Name = "MenuItem1"; + resources.ApplyResources(this.MenuItem1, "MenuItem1"); + // + // tabControl2 + // + this.tabControl2.Controls.Add(this.tabPage2); + resources.ApplyResources(this.tabControl2, "tabControl2"); + this.tabControl2.Name = "tabControl2"; + this.tabControl2.SelectedIndex = 0; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.lvRoutings); + resources.ApplyResources(this.tabPage2, "tabPage2"); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // menuServer + // + this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.MenuItem1, + this.toolStripMenuItem1}); + resources.ApplyResources(this.menuServer, "menuServer"); + this.menuServer.Name = "menuServer"; + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuImportRulesFromPreset, + this.menuImportRulesFromFile, + this.menuImportRulesFromClipboard}); + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1"); + // + // menuImportRulesFromPreset + // + this.menuImportRulesFromPreset.Name = "menuImportRulesFromPreset"; + resources.ApplyResources(this.menuImportRulesFromPreset, "menuImportRulesFromPreset"); + this.menuImportRulesFromPreset.Click += new System.EventHandler(this.menuImportRulesFromPreset_Click); + // + // menuImportRulesFromFile + // + this.menuImportRulesFromFile.Name = "menuImportRulesFromFile"; + resources.ApplyResources(this.menuImportRulesFromFile, "menuImportRulesFromFile"); + this.menuImportRulesFromFile.Click += new System.EventHandler(this.menuImportRulesFromFile_Click); + // + // menuImportRulesFromClipboard + // + this.menuImportRulesFromClipboard.Name = "menuImportRulesFromClipboard"; + resources.ApplyResources(this.menuImportRulesFromClipboard, "menuImportRulesFromClipboard"); + this.menuImportRulesFromClipboard.Click += new System.EventHandler(this.menuImportRulesFromClipboard_Click); + // // RoutingSettingForm // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.btnClose; - this.Controls.Add(this.panCon); + this.Controls.Add(this.tabControl2); this.Controls.Add(this.panel1); this.Controls.Add(this.panel2); + this.Controls.Add(this.menuServer); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Name = "RoutingSettingForm"; this.Load += new System.EventHandler(this.RoutingSettingForm_Load); this.panel2.ResumeLayout(false); this.panel1.ResumeLayout(false); this.panel1.PerformLayout(); + this.cmsLv.ResumeLayout(false); + this.tabControl2.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.menuServer.ResumeLayout(false); + this.menuServer.PerformLayout(); this.ResumeLayout(false); + this.PerformLayout(); } @@ -140,12 +280,27 @@ private System.Windows.Forms.Button btnClose; private System.Windows.Forms.Button btnOK; private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Button btnAdd; - private System.Windows.Forms.Panel panCon; private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Label labRoutingTips; private System.Windows.Forms.LinkLabel linkLabelRoutingDoc; private System.Windows.Forms.ComboBox cmbdomainStrategy; - private System.Windows.Forms.Button btnSetDefRountingRule; + private Base.ListViewFlickerFree lvRoutings; + private System.Windows.Forms.TabControl tabControl2; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.ContextMenuStrip cmsLv; + private System.Windows.Forms.ToolStripMenuItem menuRemove; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripMenuItem menuMoveTop; + private System.Windows.Forms.ToolStripMenuItem menuMoveUp; + private System.Windows.Forms.ToolStripMenuItem menuMoveDown; + private System.Windows.Forms.ToolStripMenuItem menuMoveBottom; + private System.Windows.Forms.ToolStripMenuItem menuSelectAll; + private System.Windows.Forms.ToolStripMenuItem menuAdd; + private System.Windows.Forms.MenuStrip menuServer; + private System.Windows.Forms.ToolStripMenuItem MenuItem1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromPreset; + private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromFile; + private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromClipboard; + private System.Windows.Forms.ToolStripMenuItem menuExportSelectedRules; } } \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSettingForm.cs b/v2rayN/v2rayN/Forms/RoutingSettingForm.cs index 35bd956f..e63d4ed8 100644 --- a/v2rayN/v2rayN/Forms/RoutingSettingForm.cs +++ b/v2rayN/v2rayN/Forms/RoutingSettingForm.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Windows.Forms; +using v2rayN.Base; using v2rayN.Handler; using v2rayN.Mode; @@ -8,8 +9,7 @@ namespace v2rayN.Forms { public partial class RoutingSettingForm : BaseForm { - List lstControls = new List(); - + private List lvSelecteds = new List(); public RoutingSettingForm() { InitializeComponent(); @@ -19,59 +19,61 @@ namespace v2rayN.Forms { cmbdomainStrategy.Text = config.domainStrategy; - if (config.routingItem == null) + if (config.rules == null) { - config.routingItem = new List(); + config.rules = new List(); } - - RefreshSubsView(); + InitRoutingsView(); + RefreshRoutingsView(); } - /// - /// 刷新列表 - /// - private void RefreshSubsView() + private void InitRoutingsView() { - panCon.Controls.Clear(); - lstControls.Clear(); + lvRoutings.BeginUpdate(); + lvRoutings.Items.Clear(); - for (int k = config.routingItem.Count - 1; k >= 0; k--) - { - RoutingItem item = config.routingItem[k]; - if (Utils.IsNullOrEmpty(item.remarks)) - { - config.routingItem.RemoveAt(k); - } - } + lvRoutings.GridLines = true; + lvRoutings.FullRowSelect = true; + lvRoutings.View = View.Details; + lvRoutings.MultiSelect = true; + lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable; - foreach (RoutingItem item in config.routingItem) - { - RoutingSettingControl control = new RoutingSettingControl(); - control.OnButtonClicked += Control_OnButtonClicked; - control.routingItem = item; - control.Dock = DockStyle.Top; + lvRoutings.Columns.Add("", 30); + lvRoutings.Columns.Add(UIRes.I18N("LvAlias"), 100); + lvRoutings.Columns.Add("outboundTag", 80); + lvRoutings.Columns.Add("port", 80); + lvRoutings.Columns.Add("domain", 200); + lvRoutings.Columns.Add("ip", 200); - panCon.Controls.Add(control); - panCon.Controls.SetChildIndex(control, 0); - - lstControls.Add(control); - } + lvRoutings.EndUpdate(); } - private void Control_OnButtonClicked(object sender, EventArgs e) + private void RefreshRoutingsView() { - RefreshSubsView(); + lvRoutings.BeginUpdate(); + lvRoutings.Items.Clear(); + + for (int k = 0; k < config.rules.Count; k++) + { + var item = config.rules[k]; + + ListViewItem lvItem = new ListViewItem(""); + Utils.AddSubItem(lvItem, "remarks", item.remarks); + Utils.AddSubItem(lvItem, "outboundTag", item.outboundTag); + Utils.AddSubItem(lvItem, "port", item.port); + Utils.AddSubItem(lvItem, "domain", Utils.List2String(item.domain)); + Utils.AddSubItem(lvItem, "ip", Utils.List2String(item.ip)); + + if (lvItem != null) lvRoutings.Items.Add(lvItem); + } + lvRoutings.EndUpdate(); } private void btnOK_Click(object sender, EventArgs e) { config.domainStrategy = cmbdomainStrategy.Text; - if (config.routingItem.Count <= 0) - { - AddSub("proxy", ""); - } - if (ConfigHandler.SaveRoutingItem(ref config) == 0) + if (ConfigHandler.SaveRoutingRulesItem(ref config) == 0) { this.DialogResult = DialogResult.OK; } @@ -79,7 +81,6 @@ namespace v2rayN.Forms { UI.ShowWarning(UIRes.I18N("OperationFailed")); } - } private void btnClose_Click(object sender, EventArgs e) @@ -87,58 +88,226 @@ namespace v2rayN.Forms this.DialogResult = DialogResult.Cancel; } - private void btnAdd_Click(object sender, EventArgs e) - { - AddSub("proxy", ""); - - RefreshSubsView(); - } - - - private void AddSub(string outboundTag, string userRule) - { - RoutingItem RoutingItem = new RoutingItem - { - remarks = outboundTag, - outboundTag = outboundTag, - userRules = Utils.String2List(userRule) - - }; - config.routingItem.Add(RoutingItem); - } - - - private void btnSetDefRountingRule_Click(object sender, EventArgs e) - { - config.routingItem.Clear(); - - List lstTag = new List - { - Global.agentTag, - Global.directTag, - Global.blockTag - }; - for (int k = 0; k < lstTag.Count; k++) - { - DownloadHandle downloadHandle = new DownloadHandle(); - - string result = downloadHandle.WebDownloadStringSync(Global.CustomRoutingListUrl + lstTag[k]); - if (Utils.IsNullOrEmpty(result)) - { - result = Utils.GetEmbedText(Global.CustomRoutingFileName + lstTag[k]); - } - AddSub(lstTag[k], result); - } - - AddSub(Global.directTag, Utils.GetEmbedText(Global.CustomRoutingFileName + "private")); - AddSub(Global.agentTag, ""); - - RefreshSubsView(); - } - private void linkLabelRoutingDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start("https://www.v2fly.org/config/routing.html"); } + + private void lvRoutings_DoubleClick(object sender, EventArgs e) + { + int index = GetLvSelectedIndex(); + if (index < 0) + { + return; + } + var fm = new RoutingSettingDetailsForm(); + fm.EditIndex = index; + if (fm.ShowDialog() == DialogResult.OK) + { + RefreshRoutingsView(); + } + } + + private int GetLvSelectedIndex() + { + int index = -1; + lvSelecteds.Clear(); + try + { + if (lvRoutings.SelectedIndices.Count <= 0) + { + UI.Show(UIRes.I18N("PleaseSelectRules")); + return index; + } + + index = lvRoutings.SelectedIndices[0]; + foreach (int i in lvRoutings.SelectedIndices) + { + lvSelecteds.Add(i); + } + return index; + } + catch + { + return index; + } + } + + #region Edit function + + private void menuMoveTop_Click(object sender, EventArgs e) + { + MoveRule(EMove.Top); + } + + private void menuMoveUp_Click(object sender, EventArgs e) + { + MoveRule(EMove.Up); + } + + private void menuMoveDown_Click(object sender, EventArgs e) + { + MoveRule(EMove.Down); + } + + private void menuMoveBottom_Click(object sender, EventArgs e) + { + MoveRule(EMove.Bottom); + } + + private void MoveRule(EMove eMove) + { + int index = GetLvSelectedIndex(); + if (index < 0) + { + UI.Show(UIRes.I18N("PleaseSelectRules")); + return; + } + if (ConfigHandler.MoveRoutingRule(ref config, index, eMove) == 0) + { + RefreshRoutingsView(); + } + } + private void menuSelectAll_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in lvRoutings.Items) + { + item.Selected = true; + } + } + + private void menuAdd_Click(object sender, EventArgs e) + { + var fm = new RoutingSettingDetailsForm(); + fm.EditIndex = -1; + if (fm.ShowDialog() == DialogResult.OK) + { + RefreshRoutingsView(); + } + } + + private void menuRemove_Click(object sender, EventArgs e) + { + int index = GetLvSelectedIndex(); + if (index < 0) + { + return; + } + if (UI.ShowYesNo(UIRes.I18N("RemoveRules")) == DialogResult.No) + { + return; + } + for (int k = lvSelecteds.Count - 1; k >= 0; k--) + { + config.rules.RemoveAt(index); + } + RefreshRoutingsView(); + } + private void menuExportSelectedRules_Click(object sender, EventArgs e) + { + GetLvSelectedIndex(); + var lst = new List(); + foreach (int v in lvSelecteds) + { + lst.Add(config.rules[v]); + } + if (lst.Count > 0) + { + Utils.SetClipboardData(Utils.ToJson(lst)); + UI.Show(UIRes.I18N("OperationSuccess")); + } + + } + + private void lvRoutings_KeyDown(object sender, KeyEventArgs e) + { + if (e.Control) + { + switch (e.KeyCode) + { + case Keys.A: + menuSelectAll_Click(null, null); + break; + case Keys.C: + menuExportSelectedRules_Click(null, null); + break; + } + } + else + { + switch (e.KeyCode) + { + case Keys.Delete: + menuRemove_Click(null, null); + break; + case Keys.T: + menuMoveTop_Click(null, null); + break; + case Keys.B: + menuMoveBottom_Click(null, null); + break; + case Keys.U: + menuMoveUp_Click(null, null); + break; + case Keys.D: + menuMoveDown_Click(null, null); + break; + } + } + } + #endregion + + #region preset rules + private void menuImportRulesFromPreset_Click(object sender, EventArgs e) + { + var rules = Utils.GetEmbedText(Global.CustomRoutingFileName + "rules"); + if (ConfigHandler.AddBatchRoutingRules(ref config, rules) == 0) + { + RefreshRoutingsView(); + UI.Show(UIRes.I18N("OperationSuccess")); + } + } + + private void menuImportRulesFromFile_Click(object sender, EventArgs e) + { + OpenFileDialog fileDialog = new OpenFileDialog + { + Multiselect = false, + Filter = "Rules|*.json|All|*.*" + }; + if (fileDialog.ShowDialog() != DialogResult.OK) + { + return; + } + string fileName = fileDialog.FileName; + if (Utils.IsNullOrEmpty(fileName)) + { + return; + } + string result = Utils.LoadResource(fileName); + if (Utils.IsNullOrEmpty(result)) + { + return; + } + if (ConfigHandler.AddBatchRoutingRules(ref config, result) == 0) + { + RefreshRoutingsView(); + UI.Show(UIRes.I18N("OperationSuccess")); + } + } + + private void menuImportRulesFromClipboard_Click(object sender, EventArgs e) + { + string clipboardData = Utils.GetClipboardData(); + if (ConfigHandler.AddBatchRoutingRules(ref config, clipboardData) == 0) + { + RefreshRoutingsView(); + UI.Show(UIRes.I18N("OperationSuccess")); + } + } + + #endregion + + } } diff --git a/v2rayN/v2rayN/Forms/RoutingSettingForm.resx b/v2rayN/v2rayN/Forms/RoutingSettingForm.resx index 9c08b219..ae3fa1eb 100644 --- a/v2rayN/v2rayN/Forms/RoutingSettingForm.resx +++ b/v2rayN/v2rayN/Forms/RoutingSettingForm.resx @@ -145,60 +145,6 @@ panel2 - 1 - - - True - - - Fill - - - 0, 68 - - - 765, 545 - - - 10 - - - panCon - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - NoControl - - - 47, 17 - - - 75, 23 - - - 6 - - - &Add - - - btnAdd - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - 0 @@ -226,7 +172,7 @@ panel2 - 2 + 1 Bottom @@ -250,67 +196,7 @@ $this - 2 - - - Top, Right - - - True - - - NoControl - - - 319, 17 - - - 229, 23 - - - 19 - - - Set default custom routing rules - - - btnSetDefRountingRule - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 0 - - - NoControl - - - 10, 42 - - - 598, 16 - - - 13 - - - *Set the rules, separated by commas (,); support Domain (pure string / regular / subdomain) and IP - - - labRoutingTips - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 1 + 3 True @@ -343,7 +229,7 @@ panel1 - 2 + 0 AsIs @@ -373,16 +259,16 @@ panel1 - 3 + 1 Top - 0, 0 + 0, 25 - 765, 68 + 765, 51 11 @@ -397,8 +283,217 @@ $this + 2 + + + 17, 17 + + + 202, 22 + + + Add + + + 202, 22 + + + Remove selected + + + 202, 22 + + + Select All (Ctrl+A) + + + 202, 22 + + + Export Selected Rules + + + 199, 6 + + + 202, 22 + + + Move to top (T) + + + 202, 22 + + + Up (U) + + + 202, 22 + + + Down (D) + + + 202, 22 + + + Move to bottom (B) + + + 203, 186 + + + cmsLv + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Fill + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 + ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu + PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA + BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 + bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp + bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz + dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA + CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp + bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 + bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 + ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 + ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== + + + + 3, 3 + + + 751, 505 + + + 12 + + + lvRoutings + + + v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabPage2 + + + 0 + + + 120, 21 + + + Edit and Function + + + 4, 22 + + + 3, 3, 3, 3 + + + 757, 511 + + + 0 + + + RuleList + + + tabPage2 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl2 + + + 0 + + + Fill + + + 0, 76 + + + 765, 537 + + + 14 + + + tabControl2 + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + 1 + + 139, 17 + + + 247, 22 + + + Import Rules From Preset + + + 247, 22 + + + Import Rules From File + + + 247, 22 + + + Import Rules From Clipboard + + + 95, 21 + + + Import Rules + + + 0, 0 + + + 765, 25 + + + 15 + + + menuServer + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + True @@ -411,6 +506,90 @@ Routing Settings + + menuAdd + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuRemove + + + 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 + + + menuExportSelectedRules + + + 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 + + + MenuItem1 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItem1 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuImportRulesFromPreset + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuImportRulesFromFile + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuImportRulesFromClipboard + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + RoutingSettingForm diff --git a/v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx index dc3bb7b1..c4e5f695 100644 --- a/v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx @@ -120,25 +120,141 @@ 取消(&C) - - 添加(&A) - 确定(&O) - - 一键设置默认自定义路由规则 - - - *设置的规则,用逗号(,)隔开;支持Domain(纯字符串/正则/子域名)和IP - + + 785, 60 + 77, 12 域名解析策略 + + 785, 51 + + + 196, 22 + + + 添加规则 + + + 196, 22 + + + 移除所选规则 + + + 196, 22 + + + 全选 + + + 196, 22 + + + 导出所选规则至剪贴板 + + + 193, 6 + + + 196, 22 + + + 上移至顶 (T) + + + 196, 22 + + + 上移 (U) + + + 196, 22 + + + 下移 (D) + + + 196, 22 + + + 下移至底 (B) + + + 92, 21 + + + 路由规则功能 + + + 197, 186 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 + ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu + PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA + BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 + bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp + bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz + dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA + CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp + bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 + bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 + ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 + ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== + + + + 771, 505 + + + 777, 511 + + + 路由规则列表 + + + 785, 537 + + + 184, 22 + + + 从预设中导入规则 + + + 184, 22 + + + 从文件中导入规则 + + + 184, 22 + + + 从剪贴板中导入规则 + + + 92, 21 + + + 导入路由规则 + + + 785, 25 + + + 785, 673 + 路由设置 diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs index 7c96ee51..478fbbd0 100644 --- a/v2rayN/v2rayN/Global.cs +++ b/v2rayN/v2rayN/Global.cs @@ -9,6 +9,9 @@ namespace v2rayN public const string v2rayWebsiteUrl = @"https://www.v2fly.org/"; public const string AboutUrl = @"https://github.com/2dust/v2rayN"; public const string UpdateUrl = AboutUrl + @"/releases"; + public const string v2flyCoreUrl = "https://github.com/v2fly/v2ray-core/releases"; + public const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases"; + public const string NUrl = @"https://github.com/2dust/v2rayN/releases"; /// @@ -17,7 +20,7 @@ namespace v2rayN public const string SpeedTestUrl = @"http://cachefly.cachefly.net/10mb.test"; public const string SpeedPingTestUrl = @"https://www.google.com/generate_204"; public const string AvailabilityTestUrl = @"https://www.google.com/generate_204"; - + /// /// CustomRoutingListUrl /// diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs index ddce8665..cfdd2281 100644 --- a/v2rayN/v2rayN/Handler/ConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs @@ -86,10 +86,10 @@ namespace v2rayN.Handler if (Utils.IsNullOrEmpty(config.domainStrategy)) { config.domainStrategy = "IPIfNonMatch"; - } - if (config.routingItem == null) + } + if (config.rules == null) { - config.routingItem = new List(); + config.rules = new List(); } //kcp if (config.kcpItem == null) @@ -1067,14 +1067,14 @@ namespace v2rayN.Handler /// /// /// - public static int SaveRoutingItem(ref Config config) + public static int SaveRoutingRulesItem(ref Config config) { - if (config.routingItem == null || config.routingItem.Count <= 0) + if (config.rules == null) { return -1; } - foreach (RoutingItem sub in config.routingItem) + foreach (RulesItem sub in config.rules) { } @@ -1083,6 +1083,134 @@ namespace v2rayN.Handler ToJsonFile(config); return 0; } + /// + /// AddRoutingRulesItem + /// + /// + /// + /// + /// + public static int AddRoutingRule(ref Config config, RulesItem item, int index) + { + if (index >= 0) + { + config.rules[index] = item; + } + else + { + config.rules.Add(item); + } + Global.reloadV2ray = true; + ToJsonFile(config); + + return 0; + } + + /// + /// AddBatchRoutingRules + /// + /// + /// + /// + public static int AddBatchRoutingRules(ref Config config, string clipboardData) + { + if (Utils.IsNullOrEmpty(clipboardData)) + { + return -1; + } + + var lstRules = Utils.FromJson>(clipboardData); + if (lstRules == null) + { + return -1; + } + + config.rules.Clear(); + foreach (var item in lstRules) + { + config.rules.Add(item); + } + + Global.reloadV2ray = true; + + ToJsonFile(config); + + return 0; + } + + /// + /// MoveRoutingRule + /// + /// + /// + /// + /// + public static int MoveRoutingRule(ref Config config, int index, EMove eMove) + { + int count = config.rules.Count; + if (index < 0 || index > config.rules.Count - 1) + { + return -1; + } + switch (eMove) + { + case EMove.Top: + { + if (index == 0) + { + return 0; + } + var item = Utils.DeepCopy(config.rules[index]); + config.rules.RemoveAt(index); + config.rules.Insert(0, item); + + break; + } + case EMove.Up: + { + if (index == 0) + { + return 0; + } + var item = Utils.DeepCopy(config.rules[index]); + config.rules.RemoveAt(index); + config.rules.Insert(index - 1, item); + + break; + } + + case EMove.Down: + { + if (index == count - 1) + { + return 0; + } + var item = Utils.DeepCopy(config.rules[index]); + config.rules.RemoveAt(index); + config.rules.Insert(index + 1, item); + + break; + } + case EMove.Bottom: + { + if (index == count - 1) + { + return 0; + } + var item = Utils.DeepCopy(config.rules[index]); + config.rules.RemoveAt(index); + config.rules.Add(item); + + break; + } + + } + Global.reloadV2ray = true; + + ToJsonFile(config); + + return 0; + } } } diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs index 5dacf61f..dd1d057a 100644 --- a/v2rayN/v2rayN/Handler/DownloadHandle.cs +++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs @@ -52,12 +52,12 @@ namespace v2rayN.Handler #region Check for updates - private readonly string nLatestUrl = "https://github.com/2dust/v2rayN/releases/latest"; - private const string nUrl = "https://github.com/2dust/v2rayN/releases/download/{0}/v2rayN.zip"; - private readonly string v2flyCoreLatestUrl = "https://github.com/v2fly/v2ray-core/releases/latest"; - private const string v2flyCoreUrl = "https://github.com/v2fly/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip"; - private readonly string xrayCoreLatestUrl = "https://github.com/XTLS/Xray-core/releases/latest"; - private const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases/download/{0}/Xray-windows-{1}.zip"; + private readonly string nLatestUrl = Global.NUrl + "/latest"; + private const string nUrl = Global.NUrl + "/download/{0}/v2rayN.zip"; + private readonly string v2flyCoreLatestUrl = Global.v2flyCoreUrl + "/latest"; + private const string v2flyCoreUrl = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip"; + private readonly string xrayCoreLatestUrl = Global.xrayCoreUrl + "/latest"; + private const string xrayCoreUrl = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip"; public async void CheckUpdateAsync(string type) { @@ -119,7 +119,7 @@ namespace v2rayN.Handler string filePath = Utils.GetPath(core); if (!File.Exists(filePath)) { - string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2fly/v2ray-core/releases"); + string msg = string.Format(UIRes.I18N("NotFoundCore"), @""); //ShowMsg(true, msg); return ""; } diff --git a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs index 61175ba4..3242cbb1 100644 --- a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs @@ -195,9 +195,9 @@ namespace v2rayN.Handler { v2rayConfig.routing.domainStrategy = config.domainStrategy; - foreach (var item in config.routingItem) + foreach (var item in config.rules) { - routingUserRule(item.userRules, item.outboundTag, ref v2rayConfig); + routingUserRule(item, ref v2rayConfig); } } } @@ -206,68 +206,38 @@ namespace v2rayN.Handler } return 0; } - private static int routingUserRule(List userRule, string tag, ref V2rayConfig v2rayConfig) + private static int routingUserRule(RulesItem rules, ref V2rayConfig v2rayConfig) { try { - if (userRule == null) + if (rules == null) { + return 0; } - else if (userRule.Count == 0) + var hasDomainIp = false; + if (rules.domain != null && rules.domain.Count > 0) { - v2rayConfig.routing.rules.Add(new RulesItem - { - type = "field", - outboundTag = tag, - port = "0-65535" - }); + var it = Utils.DeepCopy(rules); + it.ip = null; + it.type = "field"; + v2rayConfig.routing.rules.Add(it); + hasDomainIp = true; } - else if (userRule.Count > 0) + if (rules.ip != null && rules.ip.Count > 0) { - //Domain - RulesItem rulesDomain = new RulesItem - { - type = "field", - outboundTag = tag, - domain = new List() - }; - - //IP - RulesItem rulesIP = new RulesItem - { - type = "field", - outboundTag = tag, - ip = new List() - }; - - foreach (string u in userRule) - { - string url = u.TrimEx(); - if (Utils.IsNullOrEmpty(url)) - { - continue; - } - if (Utils.IsIP(url) || url.StartsWith("geoip:")) - { - rulesIP.ip.Add(url); - } - else if (Utils.IsDomain(url) - || url.StartsWith("geosite:") - || url.StartsWith("regexp:") - || url.StartsWith("domain:") - || url.StartsWith("full:")) - { - rulesDomain.domain.Add(url); - } - } - if (rulesDomain.domain.Count > 0) - { - v2rayConfig.routing.rules.Add(rulesDomain); - } - if (rulesIP.ip.Count > 0) - { - v2rayConfig.routing.rules.Add(rulesIP); - } + var it = Utils.DeepCopy(rules); + it.domain = null; + it.type = "field"; + v2rayConfig.routing.rules.Add(it); + hasDomainIp = true; + } + if (!hasDomainIp && !Utils.IsNullOrEmpty(rules.port)) + { + var it = Utils.DeepCopy(rules); + it.domain = null; + it.ip = null; + it.type = "field"; + v2rayConfig.routing.rules.Add(it); } } catch diff --git a/v2rayN/v2rayN/Handler/V2rayHandler.cs b/v2rayN/v2rayN/Handler/V2rayHandler.cs index e4d13371..95951b5e 100644 --- a/v2rayN/v2rayN/Handler/V2rayHandler.cs +++ b/v2rayN/v2rayN/Handler/V2rayHandler.cs @@ -22,18 +22,13 @@ namespace v2rayN.Handler { private static string v2rayConfigRes = Global.v2rayConfigFileName; private List lstV2ray; + private string coreUrl; public event ProcessDelegate ProcessEvent; //private int processId = 0; private Process _process; public V2rayHandler() { - lstV2ray = new List - { - "xray", - "wv2ray", - "v2ray" - }; } /// @@ -41,6 +36,24 @@ namespace v2rayN.Handler /// public void LoadV2ray(Config config) { + if (config.coreType == ECoreType.v2fly_core) + { + lstV2ray = new List + { + "wv2ray", + "v2ray" + }; + coreUrl = Global.v2flyCoreUrl; + } + else + { + lstV2ray = new List + { + "xray" + }; + coreUrl = Global.xrayCoreUrl; + } + if (Global.reloadV2ray) { string fileName = Utils.GetPath(v2rayConfigRes); @@ -159,7 +172,8 @@ namespace v2rayN.Handler } } - private string V2rayFindexe() { + private string V2rayFindexe() + { //查找v2ray文件是否存在 string fileName = string.Empty; //lstV2ray.Reverse(); @@ -175,7 +189,7 @@ namespace v2rayN.Handler } if (Utils.IsNullOrEmpty(fileName)) { - string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2fly/v2ray-core/releases"); + string msg = string.Format(UIRes.I18N("NotFoundCore"), coreUrl); ShowMsg(false, msg); } return fileName; @@ -318,6 +332,6 @@ namespace v2rayN.Handler { Utils.SaveLog(ex.Message, ex); } - } + } } } diff --git a/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs b/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs index f738a318..a49e2d04 100644 --- a/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs +++ b/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs @@ -74,7 +74,7 @@ namespace v2rayN.HttpProxyHandler if (_process == null) { - string privoxyConfig = Resources.privoxy_conf; + string privoxyConfig = "";//Resources.privoxy_conf; RunningPort = config.GetLocalPort(Global.InboundHttp); privoxyConfig = privoxyConfig.Replace("__SOCKS_PORT__", localPort.ToString()); privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_PORT__", RunningPort.ToString()); diff --git a/v2rayN/v2rayN/Mode/Config.cs b/v2rayN/v2rayN/Mode/Config.cs index 245d9ed0..2680a577 100644 --- a/v2rayN/v2rayN/Mode/Config.cs +++ b/v2rayN/v2rayN/Mode/Config.cs @@ -96,7 +96,7 @@ namespace v2rayN.Mode public string speedPingTestUrl { get; set; - } + } /// /// 允许来自局域网的连接 @@ -161,7 +161,12 @@ namespace v2rayN.Mode { get; set; } - public List routingItem + public List rules + { + get; set; + } + + public ECoreType coreType { get; set; } @@ -276,7 +281,7 @@ namespace v2rayN.Mode { return GetLocalPort(Global.InboundSocks) + 1; } - + else if (protocol == "speedtest") { return GetLocalPort(Global.InboundSocks) + 103; @@ -693,32 +698,4 @@ namespace v2rayN.Mode get; set; } } - - [Serializable] - public class RoutingItem - { - /// - /// - /// - public string remarks - { - get; set; - } - - /// - /// - /// - public string outboundTag - { - get; set; - } - - /// - /// - /// - public List userRules - { - get; set; - } - } } diff --git a/v2rayN/v2rayN/Mode/ECoreType.cs b/v2rayN/v2rayN/Mode/ECoreType.cs index 4049db06..3076b8b7 100644 --- a/v2rayN/v2rayN/Mode/ECoreType.cs +++ b/v2rayN/v2rayN/Mode/ECoreType.cs @@ -3,7 +3,7 @@ namespace v2rayN.Mode { public enum ECoreType { - v2fly_core = 1, - xray_core = 2 + v2fly_core = 0, + Xray_core = 1 } } diff --git a/v2rayN/v2rayN/Mode/ERoutingSort.cs b/v2rayN/v2rayN/Mode/ERoutingSort.cs deleted file mode 100644 index 2df23d2d..00000000 --- a/v2rayN/v2rayN/Mode/ERoutingSort.cs +++ /dev/null @@ -1,11 +0,0 @@ - -namespace v2rayN.Mode -{ - public enum ERoutingSort - { - UserProxy = 1, - UserDirect = 2, - UserBlock = 3, - UserPredefined = 4 - } -} diff --git a/v2rayN/v2rayN/Mode/ESysProxyType.cs b/v2rayN/v2rayN/Mode/ESysProxyType.cs index 13f63c7e..7e33357e 100644 --- a/v2rayN/v2rayN/Mode/ESysProxyType.cs +++ b/v2rayN/v2rayN/Mode/ESysProxyType.cs @@ -3,8 +3,8 @@ namespace v2rayN.Mode { public enum ESysProxyType { - Unchanged = 0, + ForcedClear = 0, ForcedChange = 1, - ForcedClear = 2 + Unchanged = 2 } } diff --git a/v2rayN/v2rayN/Mode/RulesItem.cs b/v2rayN/v2rayN/Mode/RulesItem.cs new file mode 100644 index 00000000..a4ae121e --- /dev/null +++ b/v2rayN/v2rayN/Mode/RulesItem.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; + +namespace v2rayN.Mode +{ + [Serializable] + public class RulesItem + { + public string remarks { get; set; } + /// + /// + /// + public string type { get; set; } + /// + /// + /// + public string port { get; set; } + + public List inboundTag { get; set; } + /// + /// + /// + public string outboundTag { get; set; } + + /// + /// + /// + public List ip { get; set; } + + /// + /// + /// + public List domain { get; set; } + } + +} diff --git a/v2rayN/v2rayN/Mode/V2rayConfig.cs b/v2rayN/v2rayN/Mode/V2rayConfig.cs index 9ec65af0..94a33f8c 100644 --- a/v2rayN/v2rayN/Mode/V2rayConfig.cs +++ b/v2rayN/v2rayN/Mode/V2rayConfig.cs @@ -323,34 +323,6 @@ namespace v2rayN.Mode public List servers { get; set; } } - public class RulesItem - { - /// - /// - /// - public string type { get; set; } - /// - /// - /// - public string port { get; set; } - - public List inboundTag { get; set; } - /// - /// - /// - public string outboundTag { get; set; } - - /// - /// - /// - public List ip { get; set; } - - /// - /// - /// - public List domain { get; set; } - } - public class Routing { /// diff --git a/v2rayN/v2rayN/Properties/AssemblyInfo.cs b/v2rayN/v2rayN/Properties/AssemblyInfo.cs index 794c9c1a..82cf7900 100644 --- a/v2rayN/v2rayN/Properties/AssemblyInfo.cs +++ b/v2rayN/v2rayN/Properties/AssemblyInfo.cs @@ -32,4 +32,4 @@ using System.Runtime.InteropServices; // 方法是按如下所示使用“*”: //[assembly: AssemblyVersion("1.0.*")] //[assembly: AssemblyVersion("1.0.0")] -[assembly: AssemblyFileVersion("4.1")] +[assembly: AssemblyFileVersion("4.2")] diff --git a/v2rayN/v2rayN/Properties/Resources.Designer.cs b/v2rayN/v2rayN/Properties/Resources.Designer.cs index 2088590e..672c250f 100644 --- a/v2rayN/v2rayN/Properties/Resources.Designer.cs +++ b/v2rayN/v2rayN/Properties/Resources.Designer.cs @@ -120,23 +120,6 @@ namespace v2rayN.Properties { } } - /// - /// 查找类似 listen-address __PRIVOXY_BIND_IP__:__PRIVOXY_BIND_PORT__ - ///toggle 0 - ///logfile v2ray_privoxy.log - ///show-on-task-bar 0 - ///activity-animation 0 - ///forward-socks5 / 127.0.0.1:__SOCKS_PORT__ . - ///max-client-connections 2048 - ///hide-console - /// 的本地化字符串。 - /// - internal static string privoxy_conf { - get { - return ResourceManager.GetString("privoxy_conf", resourceCulture); - } - } - /// /// 查找 System.Byte[] 类型的本地化资源。 /// diff --git a/v2rayN/v2rayN/Properties/Resources.resx b/v2rayN/v2rayN/Properties/Resources.resx index 2aa66967..2ffcd3a9 100644 --- a/v2rayN/v2rayN/Properties/Resources.resx +++ b/v2rayN/v2rayN/Properties/Resources.resx @@ -151,9 +151,6 @@ ..\resources\sysproxy64.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\resources\privoxy_conf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - ..\Resources\minimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/v2rayN/v2rayN/Resources/pac.txt b/v2rayN/v2rayN/Resources/pac.txt deleted file mode 100644 index 6695b760..00000000 --- a/v2rayN/v2rayN/Resources/pac.txt +++ /dev/null @@ -1,7614 +0,0 @@ -// Generated by gfwlist2pac in precise mode -// https://github.com/clowwindy/gfwlist2pac - -var proxy = "__PROXY__"; - -var rules = [ - "|http://85.17.73.31/", - "||agnesb.fr", - "||akiba-web.com", - "||altrec.com", - "||angela-merkel.de", - "||angola.org", - "||apartmentratings.com", - "||apartments.com", - "||arena.taipei", - "||asianspiss.com", - "||assimp.org", - "||athenaeizou.com", - "||azubu.tv", - "||bankmobilevibe.com", - "||banorte.com", - "||bash-hackers.org", - "||beeg.com", - "||global.bing.com", - "||bloombergview.com", - "||booktopia.com.au", - "||boysmaster.com", - "||bynet.co.il", - "||carfax.com", - ".casinobellini.com", - "||casinobellini.com", - "||centauro.com.br", - "||chobit.cc", - "||clearsurance.com", - "||images.comico.tw", - "||static.comico.tw", - "||counter.social", - "||costco.com", - "||crossfire.co.kr", - "||d2pass.com", - "||darpa.mil", - "||dawangidc.com", - "||deezer.com", - "||desipro.de", - "||dingchin.com.tw", - "||discordapp.com", - "||discordapp.net", - "||dish.com", - "|http://img.dlsite.jp/", - "||dm530.net", - "share.dmhy.org", - "||dmhy.org", - "||dmm.co.jp", - "|http://www.dmm.com/netgame", - "||dnvod.tv", - "||dvdpac.com", - "||eesti.ee", - "||esurance.com", - ".expekt.com", - "||expekt.com", - ".extmatrix.com", - "||extmatrix.com", - "||fakku.net", - "||fastpic.ru", - "||filesor.com", - "||financetwitter.com", - "||flipboard.com", - "||flitto.com", - "||fnac.be", - "||fnac.com", - "||funkyimg.com", - "||fxnetworks.com", - "||g-area.org", - "||gettyimages.com", - "||getuploader.com", - "|https://raw.githubusercontent.com/programthink/zhao", - "||glass8.eu", - "||glype.com", - "||go141.com", - "||guo.media", - "||hautelook.com", - "||hautelookcdn.com", - "||wego.here.com", - "||gamer-cds.cdn.hinet.net", - "||gamer2-cds.cdn.hinet.net", - "||hmvdigital.ca", - "||hmvdigital.com", - "||homedepot.com", - "||hoovers.com", - "||hulu.com", - "||huluim.com", - "|http://secure.hustler.com", - "|http://hustlercash.com", - "|http://www.hustlercash.com", - "||hybrid-analysis.com", - "||cdn*.i-scmp.com", - "||ilovelongtoes.com", - "|http://imgmega.com/*.gif.html", - "|http://imgmega.com/*.jpg.html", - "|http://imgmega.com/*.jpeg.html", - "|http://imgmega.com/*.png.html", - "||imlive.com", - "||tw.iqiyi.com", - "||javhub.net", - "||javhuge.com", - ".javlibrary.com", - "||javlibrary.com", - "||jcpenney.com", - "||jims.net", - "||jukujo-club.com", - "||juliepost.com", - "||kawaiikawaii.jp", - "||kendatire.com", - "||khatrimaza.org", - "||kkbox.com", - "||leisurepro.com", - "||lifemiles.com", - "||longtoes.com", - "||lovetvshow.com", - "|http://www.m-sport.co.uk", - "||macgamestore.com", - "||madonna-av.com", - "||mangafox.com", - "||mangafox.me", - "||manta.com", - "||matome-plus.com", - "||matome-plus.net", - "||mattwilcox.net", - "||metarthunter.com", - "||mfxmedia.com", - "||mojim.com", - "||kb.monitorware.com", - "||monster.com", - "||moodyz.com", - "||moonbingo.com", - "||mos.ru", - "||msha.gov", - "||muzu.tv", - "||mvg.jp", - ".mybet.com", - "||mybet.com", - "||nationwide.com", - "|http://www.nbc.com/live", - "||neo-miracle.com", - "||netflix.com", - "||nflximg.com", - "||nflximg.net", - "||nflxext.com", - "||nflxso.net", - "||nflxvideo.net", - "||nic.gov", - "|http://mo.nightlife141.com", - "||nordstrom.com", - "||nordstromimage.com", - "||nordstromrack.com", - "||nottinghampost.com", - "||npsboost.com", - "||ntdtv.cz", - "||s1.nudezz.com", - "||nusatrip.com", - "||nuuvem.com", - "||omni7.jp", - "||onapp.com", - "||ontrac.com", - "@@|http://blog.ontrac.com", - "||pandora.com", - ".pandora.tv", - "||parkansky.com", - "||phmsociety.org", - "|http://*.pimg.tw/", - "||pure18.com", - "||pytorch.org", - "||qq.co.za", - "||r18.com", - "|http://radiko.jp", - "||ramcity.com.au", - "||rd.com", - "||rdio.com", - "|https://riseup.net", - "||sadistic-v.com", - "||isc.sans.edu", - "|http://cdn*.search.xxx/", - "||shiksha.com", - "||slacker.com", - "||sm-miracle.com", - "||soylentnews.org", - "||spotify.com", - "||spreadshirt.es", - "||springboardplatform.com", - "||sprite.org", - "@@|http://store.sprite.org", - "||superokayama.com", - "||superpages.com", - "||swagbucks.com", - "||switch1.jp", - "||tapanwap.com", - "||gsp.target.com", - "||login.target.com", - "||rcam.target.com", - "||thinkgeek.com", - "||thebodyshop-usa.com", - "||tma.co.jp", - "||tracfone.com", - "||tryheart.jp", - "||turntable.fm", - "||twerkingbutt.com", - "||ulop.net", - "||uukanshu.com", - "||vegasred.com", - "||vevo.com", - "||vip-enterprise.com", - "|http://viu.tv/ch/", - "|http://viu.tv/encore/", - "||vmpsoft.com", - "|http://ecsm.vs.com/", - "||wanz-factory.com", - "||ssl.webpack.de", - "||wheretowatch.com", - "||wingamestore.com", - "||wizcrafts.net", - "||vod.wwe.com", - "||xfinity.com", - "||youwin.com", - "||ytn.co.kr", - "||zattoo.com", - "||zim.vn", - "||zozotown.com", - "14.102.250.18", - "14.102.250.19", - "50.7.31.230:8898", - "174.142.105.153", - "69.65.19.160", - "||xn--4gq171p.com", - "||xn--czq75pvv1aj5c.org", - "||xn--i2ru8q2qg.com", - "||xn--oiq.cc", - "||xn--p8j9a0d9c9a.xn--q9jyb4c", - "||abebooks.com", - "|https://*.s3.amazonaws.com", - "||s3-ap-southeast-2.amazonaws.com", - "||43110.cf", - "||9gag.com", - "||agro.hk", - "||share.america.gov", - "||apkmirror.com", - "||arte.tv", - "||artstation.com", - "||bangdream.space", - "||behance.net", - "||bird.so", - "||zh.bitterwinter.org", - "||bnn.co", - "||businessinsider.com", - "||boomssr.com", - "||bwgyhw.com", - "||castbox.fm", - "||chinatimes.com", - "||clyp.it", - "||cmcn.org", - "||cmx.im", - "||dailyview.tw", - "||daum.net", - "||depositphotos.com", - "||disconnect.me", - "||documentingreality.com", - "||doubibackup.com", - "||doubmirror.cf", - "||encyclopedia.com", - "||fangeqiang.com", - "||fanqiangdang.com", - "||cloud.feedly.com", - "||feedx.net", - "||flyzy2005.com", - "||foreignpolicy.com", - "||free-ss.site", - "||freehongkong.org", - "||blog.fuckgfw233.org", - "||g0v.social", - "||globalvoices.org", - "||glorystar.me", - "||goregrish.com", - "||guangnianvpn.com", - "||hanime.tv", - "||hbo.com", - "||spaces.hightail.com", - "||hkgalden.com", - "||hkgolden.com", - "||hudson.org", - "||ipfs.io", - "||japantimes.co.jp", - "||jiji.com", - "||jintian.net", - "||jinx.com", - "||joinmastodon.org", - "||liangzhichuanmei.com", - "||lighti.me", - "||lightyearvpn.com", - "||lihkg.com", - "||line-scdn.net", - "||i.lithium.com", - "||cloud.mail.ru", - "||cdn-images.mailchimp.com", - "||mastodon.cloud", - "||mastodon.host", - "||mastodon.social", - "||matters.news", - "||me.me", - "||metart.com", - "||mohu.club", - "||mohu.ml", - "||motiyun.com", - "||msa-it.org", - "||dictionary.goo.ne.jp", - "||go.nesnode.com", - "||international-news.newsmagazine.asia", - "||nikkei.com", - "||niu.moe", - "||nofile.io", - "||now.com", - "||sukebei.nyaa.si", - "||openvpn.org", - "||onejav.com", - "||paste.ee", - "||my.pcloud.com", - "||picacomic.com", - "||pincong.rocks", - "||pixiv.net", - "||potato.im", - "||premproxy.com", - "||prism-break.org", - "||protonvpn.com", - "||api.pureapk.com", - "||quora.com", - "||quoracdn.net", - "||qz.com", - "||cdn.seatguru.com", - "||secure.raxcdn.com", - "||redd.it", - "||reddit.com", - ".redditlist.com", - "|http://redditlist.com", - "||redditmedia.com", - "||redditstatic.com", - "||rixcloud.com", - "||rixcloud.us", - "||rsdlmonitor.com", - "||shadowsocks.be", - "||shadowsocks9.com", - "||tn1.shemalez.com", - "||tn2.shemalez.com", - "||tn3.shemalez.com", - "||static.shemalez.com", - "||six-degrees.io", - "||softfamous.com", - "||softsmirror.cf", - "||sosreader.com", - "||sspanel.net", - "||sulian.me", - "||supchina.com", - "||teddysun.com", - "||textnow.me", - "||tineye.com", - "||top10vpn.com", - "||tubepornclassic.com", - "||uku.im", - "||unseen.is", - "||cn.uptodown.com", - "||uraban.me", - "||vrsmash.com", - "||vultryhw.com", - "||scache.vzw.com", - "||scache1.vzw.com", - "||scache2.vzw.com", - "||ss7.vzw.com", - "||ssr.tools", - "||steemit.com", - "||taiwanjustice.net", - "||tinc-vpn.org", - "||u15.info", - "||washingtonpost.com", - "||wenzhao.ca", - "||whatsonweibo.com", - "||wire.com", - "||blog.workflow.is", - "||xm.com", - "||xuehua.us", - "||yes-news.com", - "||yigeni.com", - "||you-get.org", - "||zzcloud.me", - "||aex.com", - "||allcoin.com", - "||adcex.com", - "||bcex.ca", - "||bibox.com", - "||big.one", - "||binance.com", - "||bit-z.com", - "||bitcoinworld.com", - "||bitfinex.com", - "||bithumb.com", - "||bitinka.com.ar", - "||bitmex.com", - "||btc98.com", - "||btcbank.bank", - "||btctrade.im", - "||c2cx.com", - "||chaoex.com", - "||cobinhood.com", - "||coin2co.in", - "||coinbene.com", - ".coinegg.com", - "||coinegg.com", - "||coinex.com", - "||coingi.com", - "||coinrail.co.kr", - "||cointiger.com", - "||cointobe.com", - "||coinut.com", - "||discoins.com", - "||dragonex.io", - "||ebtcbank.com", - "||etherdelta.com", - "||exmo.com", - "||exrates.me", - "||exx.com", - "||fatbtc.com", - "||gate.io", - "||gatecoin.com", - "||hbg.com", - "||hitbtc.com", - "||huobi.com", - "||huobi.pro", - "||huobipro.com", - "||bx.in.th", - "||jex.com", - "||kex.com", - "||kspcoin.com", - "||kucoin.com", - "||lbank.info", - "||livecoin.net", - "||localbitcoins.com", - "||mercatox.com", - "||oex.com", - "||okex.com", - "||otcbtc.com", - "||rightbtc.com", - "||topbtc.com", - "||xbtce.com", - "||yobit.net", - "||zb.com", - "||read01.com", - "||kknews.cc", - "china-mmm.jp.net", - ".lsxszzg.com", - ".china-mmm.net", - "||china-mmm.net", - "china-mmm.sa.com", - ".allowed.org", - ".now.im", - "||amazon.co.jp", - ".amazon.com/Dalai-Lama", - "amazon.com/Prisoner-State-Secret-Journal-Premier", - "s3-ap-northeast-1.amazonaws.com", - "||aolchannels.aol.com", - "video.aol.ca/video-detail", - "video.aol.co.uk/video-detail", - "video.aol.com", - "||video.aol.com", - "||search.aol.com", - "www.aolnews.com", - ".avmo.pw", - ".avmoo.com", - "|http://avmoo.com", - ".avmoo.net", - "|http://avmoo.net", - "||avmoo.pw", - ".javmoo.xyz", - "|http://javmoo.xyz", - ".javtag.com", - "|http://javtag.com", - ".javzoo.com", - "|http://javzoo.com", - ".tellme.pw", - ".bbc.com", - "||bbc.com", - ".bbc.co.uk", - "||bbc.co.uk", - "||bbci.co.uk", - ".bbcchinese.com", - "||bbcchinese.com", - "|http://bbc.in", - ".1dumb.com", - ".25u.com", - ".2waky.com", - ".3-a.net", - ".4dq.com", - ".4mydomain.com", - ".4pu.com", - ".acmetoy.com", - ".almostmy.com", - ".americanunfinished.com", - ".authorizeddns.net", - ".authorizeddns.org", - ".authorizeddns.us", - ".bigmoney.biz", - ".changeip.name", - ".changeip.net", - ".changeip.org", - ".cleansite.biz", - ".cleansite.info", - ".cleansite.us", - ".compress.to", - ".ddns.info", - ".ddns.me.uk", - ".ddns.mobi", - ".ddns.ms", - ".ddns.name", - ".ddns.us", - ".dhcp.biz", - ".dns-dns.com", - ".dns-stuff.com", - ".dns04.com", - ".dns05.com", - ".dns1.us", - ".dns2.us", - ".dnset.com", - ".dnsrd.com", - ".dsmtp.com", - ".dumb1.com", - ".dynamic-dns.net", - ".dynamicdns.biz", - ".dynamicdns.co.uk", - ".dynamicdns.me.uk", - ".dynamicdns.org.uk", - ".dyndns.pro", - ".dynssl.com", - ".edns.biz", - ".epac.to", - ".esmtp.biz", - ".ezua.com", - ".faqserv.com", - ".fartit.com", - ".freeddns.com", - ".freetcp.com", - ".freewww.biz", - ".freewww.info", - ".ftp1.biz", - ".ftpserver.biz", - ".gettrials.com", - ".got-game.org", - ".gr8domain.biz", - ".gr8name.biz", - ".https443.net", - ".https443.org", - ".ikwb.com", - ".instanthq.com", - ".iownyour.biz", - ".iownyour.org", - ".isasecret.com", - ".itemdb.com", - ".itsaol.com", - ".jetos.com", - ".jkub.com", - ".jungleheart.com", - ".justdied.com", - ".lflink.com", - ".lflinkup.com", - ".lflinkup.net", - ".lflinkup.org", - ".longmusic.com", - ".mefound.com", - ".moneyhome.biz", - ".mrbasic.com", - ".mrbonus.com", - ".mrface.com", - ".mrslove.com", - ".my03.com", - ".mydad.info", - ".myddns.com", - ".myftp.info", - ".myftp.name", - ".mylftv.com", - ".mymom.info", - ".mynetav.net", - ".mynetav.org", - ".mynumber.org", - ".mypicture.info", - ".mypop3.net", - ".mypop3.org", - ".mysecondarydns.com", - ".mywww.biz", - ".myz.info", - ".ninth.biz", - ".ns01.biz", - ".ns01.info", - ".ns01.us", - ".ns02.biz", - ".ns02.info", - ".ns02.us", - ".ns1.name", - ".ns2.name", - ".ns3.name", - ".ocry.com", - ".onedumb.com", - ".onmypc.biz", - ".onmypc.info", - ".onmypc.net", - ".onmypc.org", - ".onmypc.us", - ".organiccrap.com", - ".otzo.com", - ".ourhobby.com", - ".pcanywhere.net", - ".port25.biz", - ".proxydns.com", - ".qhigh.com", - ".qpoe.com", - ".rebatesrule.net", - ".sellclassics.com", - ".sendsmtp.com", - ".serveuser.com", - ".serveusers.com", - ".sexidude.com", - ".sexxxy.biz", - ".sixth.biz", - ".squirly.info", - ".ssl443.org", - ".toh.info", - ".toythieves.com", - ".trickip.net", - ".trickip.org", - ".vizvaz.com", - ".wha.la", - ".wikaba.com", - ".www1.biz", - ".wwwhost.biz", - "@@|http://xx.wwwhost.biz", - ".x24hr.com", - ".xxuz.com", - ".xxxy.biz", - ".xxxy.info", - ".ygto.com", - ".youdontcare.com", - ".yourtrap.com", - ".zyns.com", - ".zzux.com", - "d1b183sg0nvnuh.cloudfront.net", - "|https://d1b183sg0nvnuh.cloudfront.net", - "d1c37gjwa26taa.cloudfront.net", - "|https://d1c37gjwa26taa.cloudfront.net", - "d3c33hcgiwev3.cloudfront.net", - "|https://d3c33hcgiwev3.cloudfront.net", - "||d3rhr7kgmtrq1v.cloudfront.net", - ".3d-game.com", - ".4irc.com", - ".b0ne.com", - ".chatnook.com", - ".darktech.org", - ".deaftone.com", - ".dtdns.net", - ".effers.com", - ".etowns.net", - ".etowns.org", - ".flnet.org", - ".gotgeeks.com", - ".scieron.com", - ".slyip.com", - ".slyip.net", - ".suroot.com", - ".blogdns.org", - ".dyndns.org", - ".dyndns-ip.com", - ".dyndns-pics.com", - ".from-sd.com", - ".from-pr.com", - ".is-a-hunter.com", - ".dynu.com", - ".dynu.net", - ".freeddns.org", - "cdninstagram.com", - "||cdninstagram.com", - "||facebook.br", - ".facebook.com", - "||facebook.com", - "@@||v6.facebook.com", - "||facebook.design", - "||connect.facebook.net", - "||facebook.hu", - "||facebook.in", - "||facebook.nl", - "||facebook.se", - "||facebookmail.com", - "||fb.com", - "||fb.me", - "||fbcdn.net", - "||fbsbx.com", - "||fbaddins.com", - "||fbworkmail.com", - ".instagram.com", - "||instagram.com", - "||m.me", - "||messenger.com", - "||oculus.com", - "||oculuscdn.com", - "||rocksdb.org", - "@@||ip6.static.sl-reverse.com", - "||thefacebook.com", - "||whatsapp.com", - "||whatsapp.net", - ".ftchinese.com", - "||ftchinese.com", - "||1e100.net", - "||466453.com", - "||abc.xyz", - "||about.google", - "||admob.com", - "||adsense.com", - "||agoogleaday.com", - "||ai.google", - "||ampproject.org", - "@@|https://www.ampproject.org", - "@@|https://cdn.ampproject.org", - "||android.com", - "||androidify.com", - "||androidtv.com", - "||api.ai", - ".appspot.com", - "||appspot.com", - "||autodraw.com", - "||blog.google", - "||blogblog.com", - "blogspot.com", - "/^https?:\\/\\/[^\\/]+blogspot\\.(.*)/", - ".blogspot.hk", - ".blogspot.jp", - ".blogspot.tw", - "||certificate-transparency.org", - "||chrome.com", - "||chromecast.com", - "||chromeexperiments.com", - "||chromercise.com", - "||chromestatus.com", - "||chromium.org", - "||com.google", - "||crbug.com", - "||creativelab5.com", - "||crisisresponse.google", - "||crrev.com", - "||data-vocabulary.org", - "||debug.com", - "||deepmind.com", - "||deja.com", - "||design.google", - "||digisfera.com", - "||dns.google", - "||domains.google", - "||duck.com", - "||environment.google", - "||feedburner.com", - "||firebaseio.com", - "||g.co", - "||gcr.io", - "||get.app", - "||get.dev", - "||get.how", - "||get.page", - "||getmdl.io", - "||getoutline.org", - "||ggpht.com", - "||gmail.com", - "||gmodules.com", - "||godoc.org", - "||golang.org", - "||goo.gl", - ".google.ae", - ".google.as", - ".google.am", - ".google.at", - ".google.az", - ".google.ba", - ".google.be", - ".google.bg", - ".google.ca", - ".google.cd", - ".google.ci", - ".google.co.id", - ".google.co.jp", - ".google.co.kr", - ".google.co.ma", - ".google.co.uk", - ".google.com", - ".google.de", - "||google.dev", - ".google.dj", - ".google.dk", - ".google.es", - ".google.fi", - ".google.fm", - ".google.fr", - ".google.gg", - ".google.gl", - ".google.gr", - ".google.ie", - ".google.is", - ".google.it", - ".google.jo", - ".google.kz", - ".google.lv", - ".google.mn", - ".google.ms", - ".google.nl", - ".google.nu", - ".google.no", - ".google.ro", - ".google.ru", - ".google.rw", - ".google.sc", - ".google.sh", - ".google.sk", - ".google.sm", - ".google.sn", - ".google.tk", - ".google.tm", - ".google.to", - ".google.tt", - ".google.vu", - ".google.ws", - "/^https?:\\/\\/([^\\/]+\\.)*google\\.(ac|ad|ae|af|al|am|as|at|az|ba|be|bf|bg|bi|bj|bs|bt|by|ca|cat|cd|cf|cg|ch|ci|cl|cm|co.ao|co.bw|co.ck|co.cr|co.id|co.il|co.in|co.jp|co.ke|co.kr|co.ls|co.ma|com|com.af|com.ag|com.ai|com.ar|com.au|com.bd|com.bh|com.bn|com.bo|com.br|com.bz|com.co|com.cu|com.cy|com.do|com.ec|com.eg|com.et|com.fj|com.gh|com.gi|com.gt|com.hk|com.jm|com.kh|com.kw|com.lb|com.ly|com.mm|com.mt|com.mx|com.my|com.na|com.nf|com.ng|com.ni|com.np|com.om|com.pa|com.pe|com.pg|com.ph|com.pk|com.pr|com.py|com.qa|com.sa|com.sb|com.sg|com.sl|com.sv|com.tj|com.tr|com.tw|com.ua|com.uy|com.vc|com.vn|co.mz|co.nz|co.th|co.tz|co.ug|co.uk|co.uz|co.ve|co.vi|co.za|co.zm|co.zw|cv|cz|de|dj|dk|dm|dz|ee|es|eu|fi|fm|fr|ga|ge|gg|gl|gm|gp|gr|gy|hk|hn|hr|ht|hu|ie|im|iq|is|it|it.ao|je|jo|kg|ki|kz|la|li|lk|lt|lu|lv|md|me|mg|mk|ml|mn|ms|mu|mv|mw|mx|ne|nl|no|nr|nu|org|pl|pn|ps|pt|ro|rs|ru|rw|sc|se|sh|si|sk|sm|sn|so|sr|st|td|tg|tk|tl|tm|tn|to|tt|us|vg|vn|vu|ws)\\/.*/", - "||googleapis.cn", - "||googleapis.com", - "||googleapps.com", - "||googleartproject.com", - "||googleblog.com", - "||googlebot.com", - "||googlechinawebmaster.com", - "||googlecode.com", - "||googlecommerce.com", - "||googledomains.com", - "||googlearth.com", - "||googleearth.com", - "||googledrive.com", - "||googlegroups.com", - "||googlehosted.com", - "||googleideas.com", - "||googleinsidesearch.com", - "||googlelabs.com", - "||googlemail.com", - "||googlemashups.com", - "||googlepagecreator.com", - "||googleplay.com", - "||googleplus.com", - "||googlescholar.com", - "||googlesource.com", - "||googleusercontent.com", - ".googlevideo.com", - "||googlevideo.com", - "||googleweblight.com", - "||googlezip.net", - "||groups.google.cn", - "||grow.google", - "||gstatic.com", - "||gvt0.com", - "||gvt1.com", - "@@||redirector.gvt1.com", - "||gvt3.com", - "||gwtproject.org", - "||html5rocks.com", - "||iam.soy", - "||igoogle.com", - "||itasoftware.com", - "||lers.google", - "||like.com", - "||madewithcode.com", - "||material.io", - "||nic.google", - "||on2.com", - "||panoramio.com", - "||picasaweb.com", - "||pki.goog", - "||plus.codes", - "||polymer-project.org", - "||pride.google", - "||questvisual.com", - "||admin.recaptcha.net", - "||api.recaptcha.net", - "||api-secure.recaptcha.net", - "||api-verify.recaptcha.net", - "||redhotlabs.com", - "||registry.google", - "||safety.google", - "||savethedate.foo", - "||schema.org", - "||shattered.io", - "|http://sipml5.org/", - "||stories.google", - "||sustainability.google", - "||synergyse.com", - "||teachparentstech.org", - "||tensorflow.org", - "||tfhub.dev", - "||thinkwithgoogle.com", - "||tiltbrush.com", - "||urchin.com", - "||waveprotocol.org", - "||waymo.com", - "||web.dev", - "||webmproject.org", - "||webrtc.org", - "||whatbrowser.org", - "||widevine.com", - "||withgoogle.com", - "||withyoutube.com", - "||x.company", - "||xn--ngstr-lra8j.com", - "||youtu.be", - ".youtube.com", - "||youtube.com", - "||youtube-nocookie.com", - "||youtubeeducation.com", - "||youtubegaming.com", - "||yt.be", - "||ytimg.com", - "||zynamics.com", - "||naughtyamerica.com", - "static01.nyt.com", - "||nyt.com", - "nytchina.com", - "nytcn.me", - "||nytcn.me", - "||nytco.com", - "|http://nyti.ms/", - ".nytimes.com", - "||nytimes.com", - "||nytimg.com", - "userapi.nytlog.com", - "cn.nytstyle.com", - "||nytstyle.com", - ".steamcommunity.com", - "||steamcommunity.com", - "|http://store.steampowered.com/app/333600", - "||t.me", - "||updates.tdesktop.com", - "||telegram.dog", - "||telegram.me", - "||telegram.org", - ".telegramdownload.com", - "||telesco.pe", - "||jtvnw.net", - "||ttvnw.net", - "||twitch.tv", - "||twitchcdn.net", - "||periscope.tv", - ".pscp.tv", - "||pscp.tv", - ".t.co", - "||t.co", - ".tweetdeck.com", - "||tweetdeck.com", - "||twimg.com", - ".twitpic.com", - "||twitpic.com", - ".twitter.com", - "||twitter.com", - "||twitter.jp", - "||vine.co", - "||gov.taipei", - ".gov.tw", - "|https://aiss.anws.gov.tw", - "||archives.gov.tw", - "||tacc.cwb.gov.tw", - "||data.gov.tw", - "||epa.gov.tw", - "||fa.gov.tw", - "||fda.gov.tw", - "||hpa.gov.tw", - "||immigration.gov.tw", - "||itaiwan.gov.tw", - "||mjib.gov.tw", - "||moeaic.gov.tw", - "||mofa.gov.tw", - "||mol.gov.tw", - "||mvdis.gov.tw", - "||nat.gov.tw", - "||nhi.gov.tw", - "||npa.gov.tw", - "||nsc.gov.tw", - "||ntbk.gov.tw", - "||ntbna.gov.tw", - "||ntbt.gov.tw", - "||ntsna.gov.tw", - "||pcc.gov.tw", - "||stat.gov.tw", - "||taipei.gov.tw", - "||taiwanjobs.gov.tw", - "||thb.gov.tw", - "||tipo.gov.tw", - "||wda.gov.tw", - "||teco-hk.org", - "||teco-mo.org", - "@@||aftygh.gov.tw", - "@@||aide.gov.tw", - "@@||tpde.aide.gov.tw", - "@@||arte.gov.tw", - "@@||chukuang.gov.tw", - "@@||cwb.gov.tw", - "@@||cycab.gov.tw", - "@@||dbnsa.gov.tw", - "@@||df.gov.tw", - "@@||eastcoast-nsa.gov.tw", - "@@||erv-nsa.gov.tw", - "@@||grb.gov.tw", - "@@||gysd.nyc.gov.tw", - "@@||hchcc.gov.tw", - "@@||hsinchu-cc.gov.tw", - "@@||iner.gov.tw", - "@@||klsio.gov.tw", - "@@||kmseh.gov.tw", - "@@||lungtanhr.gov.tw", - "@@||maolin-nsa.gov.tw", - "@@||matsu-news.gov.tw", - "@@||matsu-nsa.gov.tw", - "@@||matsucc.gov.tw", - "@@||moe.gov.tw", - "@@||mvdis.gov.tw", - "@@||nankan.gov.tw", - "@@||ncree.gov.tw", - "@@||necoast-nsa.gov.tw", - "@@||siraya-nsa.gov.tw", - "@@||cromotc.nat.gov.tw", - "@@||tax.nat.gov.tw", - "@@||necoast-nsa.gov.tw", - "@@||ner.gov.tw", - "@@||nmmba.gov.tw", - "@@||nmp.gov.tw", - "@@||nmvttc.gov.tw", - "@@||northguan-nsa.gov.tw", - "@@||npm.gov.tw", - "@@||nstm.gov.tw", - "@@||ntdmh.gov.tw", - "@@||ntl.gov.tw", - "@@||ntsec.gov.tw", - "@@||ntuh.gov.tw", - "@@||nvri.gov.tw", - "@@||penghu-nsa.gov.tw", - "@@||post.gov.tw", - "@@||siraya-nsa.gov.tw", - "@@||stdtime.gov.tw", - "@@||sunmoonlake.gov.tw", - "@@||taitung-house.gov.tw", - "@@||taoyuan.gov.tw", - "@@||tphcc.gov.tw", - "@@||trimt-nsa.gov.tw", - "@@||vghtpe.gov.tw", - "@@||vghks.gov.tw", - "@@||vghtc.gov.tw", - "@@||wanfang.gov.tw", - "@@||yatsen.gov.tw", - "@@||yda.gov.tw", - "||kinmen.org.tw", - ".v2ex.com", - "@@|http://v2ex.com", - "@@|http://cdn.v2ex.com", - "@@|http://cn.v2ex.com", - "@@|http://hk.v2ex.com", - "@@|http://i.v2ex.com", - "@@|http://lax.v2ex.com", - "@@|http://neue.v2ex.com", - "@@|http://pagespeed.v2ex.com", - "@@|http://static.v2ex.com", - "@@|http://workspace.v2ex.com", - "@@|http://www.v2ex.com", - "||data.flurry.com", - "page.bid.yahoo.com", - "tw.bid.yahoo.com", - "|https://tw.bid.yahoo.com", - "blogs.yahoo.co.jp", - "||search.yahoo.co.jp", - "buy.yahoo.com.tw/gdsale", - "hk.yahoo.com", - "hk.knowledge.yahoo.com", - "tw.money.yahoo.com", - "hk.myblog.yahoo.com", - "news.yahoo.com/china-blocks-bbc", - "||hk.news.yahoo.com", - "hk.rd.yahoo.com", - "hk.search.yahoo.com/search", - "hk.video.news.yahoo.com/video", - "meme.yahoo.com", - "tw.answers.yahoo.com", - "|https://tw.answers.yahoo.com", - "||tw.knowledge.yahoo.com", - "||tw.mall.yahoo.com", - "tw.yahoo.com", - "||tw.mobi.yahoo.com", - "tw.myblog.yahoo.com", - "||tw.news.yahoo.com", - "pulse.yahoo.com", - "||search.yahoo.com", - "upcoming.yahoo.com", - "video.yahoo.com", - "||yahoo.com.hk", - "||duckduckgo-owned-server.yahoo.net", - ".030buy.com", - ".0rz.tw", - "|http://0rz.tw", - "1-apple.com.tw", - "||1-apple.com.tw", - ".10.tt", - ".100ke.org", - ".1000giri.net", - "||1000giri.net", - ".10conditionsoflove.com", - "||10musume.com", - "123rf.com", - ".12bet.com", - "||12bet.com", - ".12vpn.com", - ".12vpn.net", - "||12vpn.com", - "||12vpn.net", - ".138.com", - "141hongkong.com/forum", - "||141jj.com", - ".141tube.com", - ".1688.com.au", - ".173ng.com", - "||173ng.com", - ".177pic.info", - ".17t17p.com", - "||18board.com", - "||18board.info", - "18onlygirls.com", - ".18p2p.com", - ".18virginsex.com", - ".1949er.org", - "zhao.1984.city", - "||zhao.1984.city", - "1984bbs.com", - "||1984bbs.com", - ".1984bbs.org", - "||1984bbs.org", - ".1991way.com", - "||1991way.com", - ".1998cdp.org", - ".1bao.org", - "|http://1bao.org", - ".1eew.com", - ".1mobile.com", - "|http://*.1mobile.tw", - "||1pondo.tv", - ".2-hand.info", - ".2000fun.com/bbs", - ".2008xianzhang.info", - "||2008xianzhang.info", - "||2017.hk", - "21andy.com/blog", - ".21join.com", - ".21pron.com", - "21sextury.com", - ".228.net.tw", - "||233abc.com", - "||24hrs.ca", - "24smile.org", - "2lipstube.com", - ".2shared.com", - "30boxes.com", - ".315lz.com", - "||32red.com", - "||36rain.com", - ".3a5a.com", - "3arabtv.com", - ".3boys2girls.com", - ".3proxy.ru", - ".3ren.ca", - ".3tui.net", - "||4bluestones.biz", - ".4chan.com", - ".4everproxy.com", - "||4everproxy.com", - "||4rbtv.com", - "||4shared.com", - "taiwannation.50webs.com", - "||51.ca", - "||51jav.org", - ".51luoben.com", - "||51luoben.com", - ".5278.cc", - ".5299.tv", - "5aimiku.com", - "5i01.com", - ".5isotoi5.org", - ".5maodang.com", - "||63i.com", - ".64museum.org", - "64tianwang.com", - "64wiki.com", - ".66.ca", - "666kb.com", - ".6park.com", - "||6park.com", - "||6parker.com", - "||6parknews.com", - "||7capture.com", - ".7cow.com", - ".8-d.com", - "|http://8-d.com", - "85cc.net", - ".85cc.us", - "|http://85cc.us", - "|http://85st.com", - ".881903.com/page/zh-tw/", - "||881903.com", - ".888.com", - ".888poker.com", - "89.64.charter.constitutionalism.solutions", - "89-64.org", - "||89-64.org", - ".8news.com.tw", - ".8z1.net", - "||8z1.net", - ".9001700.com", - "|http://908taiwan.org/", - "||91porn.com", - "||91vps.club", - ".92ccav.com", - ".991.com", - "|http://991.com", - ".99btgc01.com", - "||99btgc01.com", - ".99cn.info", - "|http://99cn.info", - "||9bis.com", - "||9bis.net", - ".tibet.a.se", - "|http://tibet.a.se", - "||a-normal-day.com", - "a5.com.ru", - "|http://aamacau.com", - ".abc.com", - ".abc.net.au", - "||abc.net.au", - ".abchinese.com", - "abclite.net", - "|https://www.abclite.net", - ".ablwang.com", - ".aboluowang.com", - "||aboluowang.com", - ".aboutgfw.com", - ".abs.edu", - ".accim.org", - ".aceros-de-hispania.com", - ".acevpn.com", - "||acevpn.com", - ".acg18.me", - "|http://acg18.me", - "||acgkj.com", - ".acmedia365.com", - ".acnw.com.au", - "actfortibet.org", - "actimes.com.au", - "activpn.com", - "||activpn.com", - "||aculo.us", - "||addictedtocoffee.de", - ".adelaidebbs.com/bbs", - ".adpl.org.hk", - "|http://adpl.org.hk", - ".adult-sex-games.com", - "||adult-sex-games.com", - "adultfriendfinder.com", - "adultkeep.net/peepshow/members/main.htm", - "||advanscene.com", - "||advertfan.com", - ".ae.org", - "||aenhancers.com", - "||af.mil", - ".afantibbs.com", - "|http://afantibbs.com", - ".ai-kan.net", - "||ai-kan.net", - "ai-wen.net", - ".aiph.net", - "||aiph.net", - ".airasia.com", - "||airconsole.com", - "|http://download.aircrack-ng.org", - ".airvpn.org", - "||airvpn.org", - ".aisex.com", - "||ait.org.tw", - "aiweiwei.com", - ".aiweiweiblog.com", - "||aiweiweiblog.com", - "||www.ajsands.com", - "a248.e.akamai.net", - "||a248.e.akamai.net", - "rfalive1.akacast.akamaistream.net", - "voa-11.akacast.akamaistream.net", - "||abematv.akamaized.net", - "||linear-abematv.akamaized.net", - "||vod-abematv.akamaized.net", - "|https://fbcdn*.akamaihd.net/", - "rthklive2-lh.akamaihd.net", - ".akademiye.org/ug", - "|http://akademiye.org/ug", - "||akiba-online.com", - "||akow.org", - ".al-islam.com", - "||al-qimmah.net", - "||alabout.com", - ".alanhou.com", - "|http://alanhou.com", - ".alarab.qa", - "||alasbarricadas.org", - "alexlur.org", - "||alforattv.net", - ".alhayat.com", - ".alicejapan.co.jp", - "aliengu.com", - "||alkasir.com", - "||allconnected.co", - ".alldrawnsex.com", - "||alldrawnsex.com", - ".allervpn.com", - "||allfinegirls.com", - ".allgirlmassage.com", - "allgirlsallowed.org", - ".allgravure.com", - "alliance.org.hk", - ".allinfa.com", - "||allinfa.com", - ".alljackpotscasino.com", - "||allmovie.com", - "||almasdarnews.com", - ".alphaporno.com", - "||alternate-tools.com", - "alternativeto.net/software", - "alvinalexander.com", - "alwaysdata.com", - "||alwaysdata.com", - "||alwaysdata.net", - ".alwaysvpn.com", - "||alwaysvpn.com", - "||am730.com.hk", - "ameblo.jp", - "||ameblo.jp", - "www1.american.edu/ted/ice/tibet", - "||americangreencard.com", - "|http://www.americorps.gov", - "||amiblockedornot.com", - ".amigobbs.net", - ".amitabhafoundation.us", - "|http://amitabhafoundation.us", - ".amnesty.org", - "||amnesty.org", - "||amnesty.org.hk", - ".amnesty.tw", - ".amnestyusa.org", - "||amnestyusa.org", - ".amnyemachen.org", - ".amoiist.com", - ".amtb-taipei.org", - "androidplus.co/apk", - ".andygod.com", - "|http://andygod.com", - "annatam.com/chinese", - "||anchorfree.com", - "||ancsconf.org", - "||andfaraway.net", - "||android-x86.org", - "angelfire.com/hi/hayashi", - "||angularjs.org", - "animecrazy.net", - ".animeshippuuden.com", - "aniscartujo.com", - "||aniscartujo.com", - "||anobii.com", - "anonymise.us", - ".anonymitynetwork.com", - ".anonymizer.com", - ".anonymouse.org", - "||anonymouse.org", - "anontext.com", - ".anpopo.com", - ".answering-islam.org", - "|http://www.antd.org", - "||anthonycalzadilla.com", - ".anti1984.com", - "antichristendom.com", - ".antiwave.net", - "|http://antiwave.net", - ".anyporn.com", - ".anysex.com", - "|http://anysex.com", - "||aobo.com.au", - ".aofriend.com", - "|http://aofriend.com", - ".aofriend.com.au", - ".aojiao.org", - "||aomiwang.com", - "video.ap.org", - ".apetube.com", - "||apiary.io", - ".apigee.com", - "||apigee.com", - "apk-dl.com", - "apkdler.com/apk/view", - ".apkmonk.com/app", - "||apkplz.com", - "apkpure.com", - "||apkpure.com", - ".aplusvpn.com", - ".appdownloader.net/Android", - ".appledaily.com", - "||appledaily.com", - "appledaily.com.hk", - "||appledaily.com.hk", - "appledaily.com.tw", - "||appledaily.com.tw", - ".appshopper.com", - "|http://appshopper.com", - "||appsocks.net", - "||appsto.re", - ".aptoide.com", - "||aptoide.com", - "||archives.gov", - ".archive.fo", - "||archive.fo", - ".archive.is", - "||archive.is", - ".archive.li", - "||archive.li", - "||archive.org", - "archive.today", - "|https://archive.today", - ".arctosia.com", - "|http://arctosia.com", - "||areca-backup.org", - ".arethusa.su", - "||arethusa.su", - "||arlingtoncemetery.mil", - "||army.mil", - ".art4tibet1998.org", - "artofpeacefoundation.org", - "artsy.net", - "||asacp.org", - "asdfg.jp/dabr", - "asg.to", - ".asia-gaming.com", - ".asiaharvest.org", - "||asiaharvest.org", - "asianews.it", - "|http://japanfirst.asianfreeforum.com/", - "||asiansexdiary.com", - "||asianwomensfilm.de", - ".asiatgp.com", - ".asiatoday.us", - "||askstudent.com", - ".askynz.net", - "||askynz.net", - "||assembla.com", - "||astrill.com", - "||atc.org.au", - ".atchinese.com", - "|http://atchinese.com", - "atgfw.org", - ".atlaspost.com", - "||atlaspost.com", - "||atdmt.com", - ".atlanta168.com/forum", - ".atnext.com", - "||atnext.com", - "ice.audionow.com", - ".av.com", - "||av.movie", - ".av-e-body.com", - "avaaz.org", - "||avaaz.org", - ".avbody.tv", - ".avcity.tv", - ".avcool.com", - ".avdb.in", - "||avdb.in", - ".avdb.tv", - "||avdb.tv", - ".avfantasy.com", - "||avg.com", - ".avgle.com", - "||avgle.com", - "||avidemux.org", - "||avoision.com", - ".avyahoo.com", - "||axureformac.com", - ".azerbaycan.tv", - "azerimix.com", - "boxun*.azurewebsites.net", - "||boxun*.azurewebsites.net", - "forum.baby-kingdom.com", - "babynet.com.hk", - "backchina.com", - "||backchina.com", - ".backpackers.com.tw/forum", - "backtotiananmen.com", - ".badiucao.com", - "||badiucao.com", - ".badjojo.com", - "badoo.com", - "|http://*2.bahamut.com.tw", - "||baidu.jp", - ".baijie.org", - "|http://baijie.org", - "||bailandaily.com", - "||baixing.me", - "||bakgeekhome.tk", - ".banana-vpn.com", - "||banana-vpn.com", - ".band.us", - ".bandwagonhost.com", - "||bandwagonhost.com", - ".bangbrosnetwork.com", - ".bangchen.net", - "|http://bangchen.net", - "||bangyoulater.com", - "bannedbook.org", - "||bannedbook.org", - ".bannednews.org", - ".baramangaonline.com", - "|http://baramangaonline.com", - ".barenakedislam.com", - "||barnabu.co.uk", - "||barton.de", - "bartvpn.com", - ".bastillepost.com", - "bayvoice.net", - "||bayvoice.net", - "dajusha.baywords.com", - "||bbchat.tv", - "||bb-chat.tv", - ".bbg.gov", - ".bbkz.com/forum", - ".bbnradio.org", - "bbs-tw.com", - ".bbsdigest.com/thread", - "||bbsfeed.com", - "bbsland.com", - ".bbsmo.com", - ".bbsone.com", - "bbtoystore.com", - ".bcast.co.nz", - ".bcc.com.tw/board", - ".bcchinese.net", - ".bcmorning.com", - "bdsmvideos.net", - ".beaconevents.com", - ".bebo.com", - "||bebo.com", - ".beevpn.com", - "||beevpn.com", - ".behindkink.com", - "||beijing1989.com", - "beijingspring.com", - "||beijingspring.com", - ".beijingzx.org", - "|http://beijingzx.org", - ".belamionline.com", - ".bell.wiki", - "|http://bell.wiki", - "bemywife.cc", - "beric.me", - ".berlintwitterwall.com", - "||berlintwitterwall.com", - ".berm.co.nz", - ".bestforchina.org", - "||bestforchina.org", - ".bestgore.com", - ".bestpornstardb.com", - "||bestvpn.com", - ".bestvpnanalysis.com", - ".bestvpnserver.com", - ".bestvpnservice.com", - ".bestvpnusa.com", - "||bet365.com", - ".betfair.com", - "||betternet.co", - ".bettervpn.com", - "||bettervpn.com", - ".bettween.com", - "||bettween.com", - "||betvictor.com", - ".bewww.net", - ".beyondfirewall.com", - "||bfnn.org", - "||bfsh.hk", - ".bgvpn.com", - "||bgvpn.com", - ".bianlei.com", - "@@||bianlei.com", - "biantailajiao.com", - "biantailajiao.in", - ".biblesforamerica.org", - "|http://biblesforamerica.org", - ".bic2011.org", - "bigfools.com", - "||bigjapanesesex.com", - ".bignews.org", - "||bignews.org", - ".bigsound.org", - ".biliworld.com", - "|http://biliworld.com", - "|http://billypan.com/wiki", - ".binux.me", - "ai.binwang.me/couplet", - "bipic.net", - ".bit.do", - "|http://bit.do", - ".bit.ly", - "|http://bit.ly", - "||bitcointalk.org", - ".bitshare.com", - "||bitshare.com", - "bitsnoop.com", - ".bitvise.com", - "||bitvise.com", - "bizhat.com", - "||bl-doujinsouko.com", - ".bjnewlife.org", - ".bjs.org", - "bjzc.org", - "||bjzc.org", - ".blacklogic.com", - ".blackvpn.com", - "||blackvpn.com", - "blewpass.com", - "tor.blingblingsquad.net", - ".blinkx.com", - "||blinkx.com", - "blinw.com", - ".blip.tv", - "||blip.tv/", - ".blockcn.com", - "||blockcn.com", - "||blockless.com", - "||blog.de", - ".blog.jp", - "|http://blog.jp", - "@@||jpush.cn", - ".blogcatalog.com", - "||blogcatalog.com", - "||blogcity.me", - ".blogger.com", - "||blogger.com", - "blogimg.jp", - "||blog.kangye.org", - ".bloglines.com", - "||bloglines.com", - "||bloglovin.com", - "rconversation.blogs.com", - "blogtd.net", - ".blogtd.org", - "|http://blogtd.org", - "||bloodshed.net", - ".bloomberg.cn", - "||bloomberg.cn", - ".bloomberg.com", - "||bloomberg.com", - "bloomberg.de", - "||bloomberg.de", - "||assets.bwbx.io", - "||bloomfortune.com", - "blueangellive.com", - ".bmfinn.com", - ".bnews.co", - "||bnews.co", - "||bnrmetal.com", - "boardreader.com/thread", - "||boardreader.com", - ".bod.asia", - "|http://bod.asia", - ".bodog88.com", - ".bolehvpn.net", - "||bolehvpn.net", - "bonbonme.com", - ".bonbonsex.com", - ".bonfoundation.org", - ".bongacams.com", - "||boobstagram.com", - "||book.com.tw", - "bookepub.com", - "||books.com.tw", - "||botanwang.com", - ".bot.nu", - ".bowenpress.com", - "||bowenpress.com", - "||app.box.com", - "dl.box.net", - "||dl.box.net", - ".boxpn.com", - "||boxpn.com", - "boxun.com", - "||boxun.com", - ".boxun.tv", - "||boxun.tv", - "boxunblog.com", - "||boxunblog.com", - ".boxunclub.com", - "boyangu.com", - ".boyfriendtv.com", - ".boysfood.com", - "||br.st", - ".brainyquote.com/quotes/authors/d/dalai_lama", - "||brandonhutchinson.com", - "||braumeister.org", - ".bravotube.net", - "||bravotube.net", - ".brazzers.com", - "||brazzers.com", - ".break.com", - "||break.com", - "breakgfw.com", - "||breakgfw.com", - "breaking911.com", - ".breakingtweets.com", - "||breakingtweets.com", - "||breakwall.net", - "briian.com/6511/freegate", - ".briefdream.com/%E7%B4%A0%E6%A3%BA", - "brizzly.com", - "||brizzly.com", - "||brkmd.com", - "broadbook.com", - ".broadpressinc.com", - "||broadpressinc.com", - "bbs.brockbbs.com", - "brucewang.net", - ".brutaltgp.com", - "||brutaltgp.com", - ".bt2mag.com", - "||bt95.com", - ".btaia.com", - ".btbtav.com", - "|http://btdigg.org", - ".btku.me", - "||btku.me", - "||btku.org", - ".btspread.com", - ".btsynckeys.com", - ".budaedu.org", - "||budaedu.org", - ".buddhanet.com.tw/zfrop/tibet", - ".buddhistchannel.tv", - ".buffered.com", - "|http://buffered.com", - ".bullog.org", - "||bullog.org", - ".bullogger.com", - "||bullogger.com", - "bunbunhk.com", - ".busayari.com", - "|http://busayari.com", - ".businessinsider.com/bing-could-be-censoring-search-results-2014", - ".businessinsider.com/china-banks-preparing-for-debt-implosion-2014", - ".businessinsider.com/hong-kong-activists-defy-police-tear-gas-as-protests-continue-overnight-2014", - ".businessinsider.com/internet-outages-reported-in-north-korea-2014", - ".businessinsider.com/iphone-6-is-approved-for-sale-in-china-2014", - ".businessinsider.com/nfl-announcers-surface-tablets-2014", - ".businessinsider.com/panama-papers", - ".businessinsider.com/umbrella-man-hong-kong-2014", - "|http://www.businessinsider.com.au/*", - ".businesstoday.com.tw", - "||businesstoday.com.tw", - ".businessweek.com", - ".busu.org/news", - "|http://busu.org/news", - "busytrade.com", - ".buugaa.com", - ".buzzhand.com", - ".buzzhand.net", - ".buzzorange.com", - "||buzzorange.com", - "||bvpn.com", - "||bwh1.net", - "bwsj.hk", - "||bx.tl", - ".c-spanvideo.org", - "||c-spanvideo.org", - "||c-est-simple.com", - ".c100tibet.org", - "||cablegatesearch.net", - ".cachinese.com", - ".cacnw.com", - "|http://cacnw.com", - ".cactusvpn.com", - "||cactusvpn.com", - ".cafepress.com", - ".cahr.org.tw", - ".calameo.com/books", - "cn.calameo.com", - "|http://cn.calameo.com", - ".calgarychinese.ca", - ".calgarychinese.com", - ".calgarychinese.net", - "|http://blog.calibre-ebook.com", - "|http://google.calstate.edu", - "falun.caltech.edu", - ".its.caltech.edu/~falun/", - ".cam4.com", - ".cam4.jp", - ".cam4.sg", - ".camfrog.com", - "||camfrog.com", - "||cams.com", - ".cams.org.sg", - "canadameet.com", - ".canalporno.com", - "|http://bbs.cantonese.asia/", - ".canyu.org", - "||canyu.org", - ".cao.im", - ".caobian.info", - "||caobian.info", - "caochangqing.com", - "||caochangqing.com", - ".cap.org.hk", - "||cap.org.hk", - ".carabinasypistolas.com", - "cardinalkungfoundation.org", - "carmotorshow.com", - "ss.carryzhou.com", - ".cartoonmovement.com", - "||cartoonmovement.com", - ".casadeltibetbcn.org", - ".casatibet.org.mx", - "|http://casatibet.org.mx", - "cari.com.my", - "||caribbeancom.com", - ".casinoking.com", - ".casinoriva.com", - "||catch22.net", - ".catchgod.com", - "|http://catchgod.com", - "||catfightpayperview.xxx", - ".catholic.org.hk", - "||catholic.org.hk", - "catholic.org.tw", - "||catholic.org.tw", - ".cathvoice.org.tw", - "||cattt.com", - ".cbc.ca", - "||cbc.ca", - ".cbsnews.com/video", - ".cbtc.org.hk", - "||cccat.cc", - "||cccat.co", - ".ccdtr.org", - "||ccdtr.org", - ".cchere.com", - "||cchere.com", - ".ccim.org", - ".cclife.ca", - "cclife.org", - "cclifefl.org", - ".ccthere.com", - "||ccthere.com", - "||ccthere.net", - ".cctmweb.net", - ".cctongbao.com/article/2078732", - "ccue.ca", - "ccue.com", - ".ccvoice.ca", - ".ccw.org.tw", - ".cgdepot.org", - "|http://cgdepot.org", - "||cdbook.org", - ".cdcparty.com", - ".cdef.org", - "||cdef.org", - "||cdig.info", - "cdjp.org", - "||cdjp.org", - ".cdn-apple.com", - "||cdn-apple.com", - ".cdnews.com.tw", - "cdp1989.org", - "cdp1998.org", - "||cdp1998.org", - "cdp2006.org", - "||cdp2006.org", - ".cdpa.url.tw", - "cdpeu.org", - "cdpusa.org", - "cdpweb.org", - "||cdpweb.org", - "cdpwu.org", - "||cdpwu.org", - "||cdw.com", - ".cecc.gov", - "||cecc.gov", - "||cellulo.info", - "||cenews.eu", - "||centerforhumanreprod.com", - "||centralnation.com", - ".centurys.net", - "|http://centurys.net", - ".cfhks.org.hk", - ".cfos.de", - ".cftfc.com", - ".cgst.edu", - ".change.org", - "||change.org", - ".changp.com", - "||changp.com", - ".changsa.net", - "|http://changsa.net", - ".channel8news.sg/news8", - ".chapm25.com", - ".chaturbate.com", - ".chuang-yen.org", - "chengmingmag.com", - ".chenguangcheng.com", - "||chenguangcheng.com", - ".chenpokong.com", - ".chenpokong.net", - "|http://chenpokong.net", - "||cherrysave.com", - ".chhongbi.org", - "chicagoncmtv.com", - "|http://chicagoncmtv.com", - ".china-week.com", - "china101.com", - "||china101.com", - "||china18.org", - "||china21.com", - "china21.org", - "||china21.org", - ".china5000.us", - "chinaaffairs.org", - "||chinaaffairs.org", - "||chinaaid.me", - "chinaaid.us", - "chinaaid.org", - "chinaaid.net", - "chinacomments.org", - "||chinacomments.org", - ".chinachange.org", - "||chinachange.org", - "chinachannel.hk", - "||chinachannel.hk", - ".chinacitynews.be", - ".chinadialogue.net", - ".chinadigitaltimes.net", - "||chinadigitaltimes.net", - ".chinaelections.org", - "||chinaelections.org", - ".chinaeweekly.com", - "||chinaeweekly.com", - "||chinafreepress.org", - ".chinagate.com", - "chinageeks.org", - "chinagfw.org", - "||chinagfw.org", - ".chinagonet.com", - ".chinagreenparty.org", - "||chinagreenparty.org", - ".chinahorizon.org", - "||chinahorizon.org", - ".chinahush.com", - ".chinainperspective.com", - "||chinainterimgov.org", - "chinalaborwatch.org", - "chinalawtranslate.com", - ".chinapost.com.tw/taiwan/national/national-news", - "chinaxchina.com/howto", - "chinalawandpolicy.com", - ".chinamule.com", - "||chinamule.com", - "chinamz.org", - ".chinanewscenter.com", - "|https://chinanewscenter.com", - ".chinapress.com.my", - "||chinapress.com.my", - ".china-review.com.ua", - "|http://china-review.com.ua", - ".chinarightsia.org", - "chinasmile.net/forums", - "chinasocialdemocraticparty.com", - "||chinasocialdemocraticparty.com", - "chinasoul.org", - "||chinasoul.org", - ".chinasucks.net", - "||chinatopsex.com", - ".chinatown.com.au", - "chinatweeps.com", - "chinaway.org", - ".chinaworker.info", - "||chinaworker.info", - "chinayouth.org.hk", - "chinayuanmin.org", - "||chinayuanmin.org", - ".chinese-hermit.net", - "chinese-leaders.org", - "chinese-memorial.org", - ".chinesedaily.com", - "||chinesedailynews.com", - ".chinesedemocracy.com", - "||chinesedemocracy.com", - "||chinesegay.org", - ".chinesen.de", - "||chinesen.de", - ".chinesenews.net.au/", - ".chinesepen.org", - ".chinesetalks.net/ch", - "||chineseupress.com", - ".chingcheong.com", - "||chingcheong.com", - ".chinman.net", - "|http://chinman.net", - "chithu.org", - "|http://chn.chosun.com", - "cnnews.chosun.com/client/news/viw.asp?cate=C01&mcate", - ".chrdnet.com", - "|http://chrdnet.com", - ".christianfreedom.org", - "|http://christianfreedom.org", - "christianstudy.com", - "||christianstudy.com", - "christusrex.org/www1/sdc", - ".chubold.com", - "chubun.com", - "chuizi.net", - "christiantimes.org.hk", - ".chrlawyers.hk", - "|http://chrlawyers.hk", - ".churchinhongkong.org/b5/index.php", - "|http://churchinhongkong.org/b5/index.php", - ".chushigangdrug.ch", - ".cienen.com", - ".cineastentreff.de", - ".cipfg.org", - "||circlethebayfortibet.org", - "||cirosantilli.com", - ".citizencn.com", - "||citizencn.com", - "|http://citizenlab.org", - "|http://www.citizenlab.org", - "||citizenscommission.hk", - ".citizenlab.org", - "citizensradio.org", - ".city365.ca", - "|http://city365.ca", - "city9x.com", - "||citypopulation.de", - ".citytalk.tw/event", - ".civicparty.hk", - "||civicparty.hk", - ".civildisobediencemovement.org", - "civilhrfront.org", - "||civilhrfront.org", - ".civiliangunner.com", - ".civilmedia.tw", - "||civilmedia.tw", - "psiphon.civisec.org", - "||vpn.cjb.net", - ".ck101.com", - "||ck101.com", - ".clarionproject.org/news/islamic-state-isis-isil-propaganda", - "||classicalguitarblog.net", - ".clb.org.hk", - "clearharmony.net", - "clearwisdom.net", - "clinica-tibet.ru", - ".clipfish.de", - "cloakpoint.com", - "||club1069.com", - "cmi.org.tw", - "|http://www.cmoinc.org", - "cmp.hku.hk", - "hkupop.hku.hk", - "||cmule.com", - "||cmule.org", - "||cms.gov", - "|http://vpn.cmu.edu", - "|http://vpn.sv.cmu.edu", - ".cn6.eu", - ".cna.com.tw", - "||cna.com.tw", - ".cnabc.com", - ".cnd.org", - "||cnd.org", - "download.cnet.com", - ".cnex.org.cn", - ".cnineu.com", - "wiki.cnitter.com", - ".cnn.com/video", - ".cnpolitics.org", - "||cnpolitics.org", - ".cn-proxy.com", - "|http://cn-proxy.com", - ".cnproxy.com", - "blog.cnyes.com", - "news.cnyes.com", - "||coat.co.jp", - ".cochina.co", - "||cochina.co", - "||cochina.org", - ".code1984.com/64", - "|http://goagent.codeplex.com", - "||codeshare.io", - "||codeskulptor.org", - "|http://tosh.comedycentral.com", - "comefromchina.com", - "||comefromchina.com", - ".comic-mega.me", - "commandarms.com", - "||commentshk.com", - ".communistcrimes.org", - "||communistcrimes.org", - "||communitychoicecu.com", - "||compileheart.com", - "||conoha.jp", - ".contactmagazine.net", - ".convio.net", - ".coobay.com", - "|http://www.cool18.com/bbs*/", - ".coolaler.com", - "||coolaler.com", - "coolder.com", - "||coolder.com", - "||coolloud.org.tw", - ".coolncute.com", - "||coolstuffinc.com", - "corumcollege.com", - ".cos-moe.com", - "|http://cos-moe.com", - ".cosplayjav.pl", - "|http://cosplayjav.pl", - ".cotweet.com", - "||cotweet.com", - ".coursehero.com", - "||coursehero.com", - "cpj.org", - "||cpj.org", - ".cq99.us", - "|http://cq99.us", - "crackle.com", - "||crackle.com", - ".crazys.cc", - ".crazyshit.com", - "||crchina.org", - "crd-net.org", - "creaders.net", - "||creaders.net", - ".creadersnet.com", - "||cristyli.com", - ".crocotube.com", - "|http://crocotube.com", - ".crossthewall.net", - "||crossthewall.net", - ".crossvpn.net", - "||crossvpn.net", - "||crucial.com", - "csdparty.com", - "||csdparty.com", - "||csuchen.de", - ".csw.org.uk", - ".ct.org.tw", - "||ct.org.tw", - ".ctao.org", - ".ctfriend.net", - ".ctitv.com.tw", - "cts.com.tw", - "|http://library.usc.cuhk.edu.hk/", - "|http://mjlsh.usc.cuhk.edu.hk/", - ".cuhkacs.org/~benng", - ".cuihua.org", - "||cuihua.org", - ".cuiweiping.net", - "||cuiweiping.net", - "||culture.tw", - ".cumlouder.com", - "||cumlouder.com", - "||curvefish.com", - ".cusu.hk", - "||cusu.hk", - ".cutscenes.net", - ".cw.com.tw", - "||cw.com.tw", - "|http://forum.cyberctm.com", - "cyberghostvpn.com", - "||cyberghostvpn.com", - "||cynscribe.com", - "cytode.us", - "||ifan.cz.cc", - "||mike.cz.cc", - "||nic.cz.cc", - ".d-fukyu.com", - "|http://d-fukyu.com", - "cl.d0z.net", - ".d100.net", - "||d100.net", - ".d2bay.com", - "|http://d2bay.com", - ".dabr.co.uk", - "||dabr.co.uk", - "dabr.eu", - "dabr.mobi", - "||dabr.mobi", - "||dabr.me", - "dadazim.com", - "||dadazim.com", - ".dadi360.com", - ".dafabet.com", - "dafagood.com", - "dafahao.com", - ".dafoh.org", - ".daftporn.com", - ".dagelijksestandaard.nl", - ".daidostup.ru", - "|http://daidostup.ru", - ".dailidaili.com", - "||dailidaili.com", - ".dailymotion.com", - "||dailymotion.com", - "daiphapinfo.net", - ".dajiyuan.com", - "||dajiyuan.de", - "dajiyuan.eu", - "dalailama.com", - ".dalailama.mn", - "|http://dalailama.mn", - ".dalailama.ru", - "||dalailama.ru", - "dalailama80.org", - ".dalailama-archives.org", - ".dalailamacenter.org", - "|http://dalailamacenter.org", - "dalailamafellows.org", - ".dalailamafilm.com", - ".dalailamafoundation.org", - ".dalailamahindi.com", - ".dalailamainaustralia.org", - ".dalailamajapanese.com", - ".dalailamaprotesters.info", - ".dalailamaquotes.org", - ".dalailamatrust.org", - ".dalailamavisit.org.nz", - ".dalailamaworld.com", - "||dalailamaworld.com", - "dalianmeng.org", - "||dalianmeng.org", - ".daliulian.org", - "||daliulian.org", - ".danke4china.net", - "||danke4china.net", - ".danwei.org", - "daolan.net", - ".daozhongxing.org", - "darktoy.net", - "||dastrassi.org", - "blog.daum.net/_blog", - ".david-kilgour.com", - "|http://david-kilgour.com", - "daxa.cn", - "||daxa.cn", - "cn.dayabook.com", - ".daylife.com/topic/dalai_lama", - "||db.tt", - ".dbc.hk/main", - "||dcard.tw", - "dcmilitary.com", - ".ddc.com.tw", - ".ddhw.info", - "||de-sci.org", - ".de-sci.org", - "packages.debian.org/zh-cn/lenny/gpass", - "||decodet.co", - ".definebabe.com", - "||delcamp.net", - "delicious.com/GFWbookmark", - ".democrats.org", - "||democrats.org", - ".demosisto.hk", - "||demosisto.hk", - "||desc.se", - "||dessci.com", - ".destroy-china.jp", - "||deutsche-welle.de", - "||devio.us", - "||devpn.com", - "||dfas.mil", - "dfn.org", - "dharmakara.net", - ".dharamsalanet.com", - ".diaoyuislands.org", - "||diaoyuislands.org", - ".difangwenge.org", - "|http://digiland.tw/", - "||digitalnomadsproject.org", - ".diigo.com", - "||diigo.com", - "||dilber.se", - "||furl.net", - ".dipity.com", - "||directcreative.com", - ".discuss.com.hk", - "||discuss.com.hk", - ".discuss4u.com", - "disp.cc", - ".disqus.com", - "||disqus.com", - ".dit-inc.us", - "||dit-inc.us", - ".dizhidizhi.com", - "||dizhuzhishang.com", - "djangosnippets.org", - ".djorz.com", - "||djorz.com", - "||dl-laby.jp", - "||dlsite.com", - "||dlyoutube.com", - "||dmcdn.net", - ".dnscrypt.org", - "||dnscrypt.org", - "||dns2go.com", - "||dnssec.net", - "doctorvoice.org", - ".dogfartnetwork.com/tour", - "gloryhole.com", - ".dojin.com", - ".dok-forum.net", - "||dolc.de", - "||dolf.org.hk", - "||dollf.com", - ".domain.club.tw", - ".domaintoday.com.au", - "chinese.donga.com", - "dongtaiwang.com", - "||dongtaiwang.com", - ".dongtaiwang.net", - "||dongtaiwang.net", - ".dongyangjing.com", - "|http://danbooru.donmai.us", - ".dontfilter.us", - "||dontmovetochina.com", - ".dorjeshugden.com", - ".dotplane.com", - "||dotplane.com", - "||dotsub.com", - ".dotvpn.com", - "||dotvpn.com", - ".doub.io", - "||doub.io", - "||dougscripts.com", - "||douhokanko.net", - "||doujincafe.com", - "dowei.org", - "dphk.org", - "dpp.org.tw", - "||dpp.org.tw", - "||dpr.info", - "||dragonsprings.org", - ".dreamamateurs.com", - ".drepung.org", - "||drgan.net", - ".drmingxia.org", - "|http://drmingxia.org", - "||dropbooks.tv", - "||dropbox.com", - "||api.dropboxapi.com", - "||notify.dropboxapi.com", - "||dropboxusercontent.com", - "drsunacademy.com", - ".drtuber.com", - ".dscn.info", - "|http://dscn.info", - ".dstk.dk", - "|http://dstk.dk", - "||dtiblog.com", - "||dtic.mil", - ".dtwang.org", - ".duanzhihu.com", - ".duckdns.org", - "|http://duckdns.org", - ".duckduckgo.com", - "||duckduckgo.com", - ".duckload.com/download", - "||duckmylife.com", - ".duga.jp", - "|http://duga.jp", - ".duihua.org", - "||duihua.org", - "||duihuahrjournal.org", - ".dunyabulteni.net", - ".duoweitimes.com", - "||duoweitimes.com", - "duping.net", - "||duplicati.com", - "dupola.com", - "dupola.net", - ".dushi.ca", - "||dvorak.org", - ".dw.com", - "||dw.com", - "||dw.de", - ".dw-world.com", - "||dw-world.com", - ".dw-world.de", - "|http://dw-world.de", - "www.dwheeler.com", - "dwnews.com", - "||dwnews.com", - "dwnews.net", - "||dwnews.net", - "xys.dxiong.com", - "||dynawebinc.com", - "||dysfz.cc", - ".dzze.com", - "||e-classical.com.tw", - "||e-gold.com", - ".e-gold.com", - ".e-hentai.org", - "||e-hentai.org", - ".e-hentaidb.com", - "|http://e-hentaidb.com", - "e-info.org.tw", - ".e-traderland.net/board", - ".e-zone.com.hk/discuz", - "|http://e-zone.com.hk/discuz", - ".e123.hk", - "||e123.hk", - ".earlytibet.com", - "|http://earlytibet.com", - ".earthcam.com", - ".earthvpn.com", - "||earthvpn.com", - "eastern-ark.com", - ".easternlightning.org", - ".eastturkestan.com", - "|http://www.eastturkistan.net/", - ".eastturkistan-gov.org", - ".eastturkistancc.org", - ".eastturkistangovernmentinexile.us", - "||eastturkistangovernmentinexile.us", - ".easyca.ca", - ".easypic.com", - ".ebony-beauty.com", - "ebookbrowse.com", - "ebookee.com", - "||ecfa.org.tw", - "ushuarencity.echainhost.com", - "||ecimg.tw", - "ecministry.net", - ".economist.com", - "bbs.ecstart.com", - "edgecastcdn.net", - "||edgecastcdn.net", - "/twimg\\.edgesuite\\.net\\/\\/?appledaily/", - "edicypages.com", - ".edmontonchina.cn", - ".edmontonservice.com", - "edoors.com", - ".edubridge.com", - "||edubridge.com", - ".edupro.org", - "||eevpn.com", - "efcc.org.hk", - ".efukt.com", - "|http://efukt.com", - "||eic-av.com", - "||eireinikotaerukai.com", - ".eisbb.com", - ".eksisozluk.com", - "||eksisozluk.com", - "electionsmeter.com", - "||elgoog.im", - ".ellawine.org", - ".elpais.com", - "||elpais.com", - ".eltondisney.com", - ".emaga.com/info/3407", - "emilylau.org.hk", - ".emanna.com/chineseTraditional", - "bitc.bme.emory.edu/~lzhou/blogs", - ".empfil.com", - ".emule-ed2k.com", - "|http://emule-ed2k.com", - ".emulefans.com", - "|http://emulefans.com", - ".emuparadise.me", - ".enanyang.my", - "||enewstree.com", - ".enfal.de", - "chinese.engadget.com", - "||engagedaily.org", - "englishforeveryone.org", - "||englishfromengland.co.uk", - "englishpen.org", - ".enlighten.org.tw", - "||entermap.com", - ".entnt.com", - "|http://entnt.com", - ".episcopalchurch.org", - ".epochhk.com", - "|http://epochhk.com", - "epochtimes-bg.com", - "||epochtimes-bg.com", - "epochtimes-romania.com", - "||epochtimes-romania.com", - "epochtimes.co.il", - "||epochtimes.co.il", - "epochtimes.co.kr", - "||epochtimes.co.kr", - "epochtimes.com", - "||epochtimes.com", - ".epochtimes.cz", - "epochtimes.de", - "epochtimes.fr", - ".epochtimes.ie", - ".epochtimes.it", - "epochtimes.jp", - "epochtimes.ru", - "epochtimes.se", - "epochtimestr.com", - ".epochweek.com", - "||epochweek.com", - "||epochweekly.com", - ".eporner.com", - ".equinenow.com", - "erabaru.net", - ".eracom.com.tw", - ".eraysoft.com.tr", - ".erepublik.com", - ".erights.net", - "||erights.net", - ".erktv.com", - "|http://erktv.com", - "||ernestmandel.org", - "||erodaizensyu.com", - "||erodoujinlog.com", - "||erodoujinworld.com", - "||eromanga-kingdom.com", - "||eromangadouzin.com", - ".eromon.net", - "|http://eromon.net", - ".eroprofile.com", - ".eroticsaloon.net", - ".eslite.com", - "||eslite.com", - "wiki.esu.im/%E8%9B%A4%E8%9B%A4%E8%AF%AD%E5%BD%95", - ".etaa.org.au", - ".etadult.com", - "etaiwannews.com", - "||etizer.org", - "||etokki.com", - ".ettoday.net/news/20151216/614081", - "etvonline.hk", - ".eu.org", - "||eu.org", - ".eucasino.com", - ".eulam.com", - ".eurekavpt.com", - "||eurekavpt.com", - ".euronews.com", - "||euronews.com", - "eeas.europa.eu/delegations/china/press_corner/all_news/news/2015/20150716_zh", - "eeas.europa.eu/statements-eeas/2015/151022", - ".evschool.net", - "|http://evschool.net", - "||exblog.jp", - "||blog.exblog.co.jp", - "@@||www.exblog.jp", - ".exchristian.hk", - "||exchristian.hk", - "|http://blog.excite.co.jp", - "||exmormon.org", - "||expatshield.com", - ".expecthim.com", - "||expecthim.com", - "experts-univers.com", - "||exploader.net", - ".expressvpn.com", - "||expressvpn.com", - ".extremetube.com", - "eyevio.jp", - "||eyevio.jp", - ".eyny.com", - "||eyny.com", - ".ezpc.tk/category/soft", - ".ezpeer.com", - "||facebookquotes4u.com", - ".faceless.me", - "||faceless.me", - "|http://facesoftibetanselfimmolators.info", - "||facesofnyfw.com", - ".faith100.org", - "|http://faith100.org", - ".faithfuleye.com", - "||faiththedog.info", - ".fakku.net", - ".falsefire.com", - "||falsefire.com", - "falun-co.org", - "falunart.org", - "||falunasia.info", - "|http://falunau.org", - ".falunaz.net", - "falundafa.org", - "falundafa-dc.org", - "||falundafa-florida.org", - "||falundafa-nc.org", - "||falundafa-pa.net", - "||falundafa-sacramento.org", - "falun-ny.net", - "||falundafaindia.org", - "falundafamuseum.org", - ".falungong.club", - ".falungong.de", - "falungong.org.uk", - "||falunhr.org", - "faluninfo.de", - "faluninfo.net", - ".falunpilipinas.net", - "||falunworld.net", - "familyfed.org", - ".fangeming.com", - "||fanglizhi.info", - "||fangong.org", - "fangongheike.com", - ".fanqiang.tk", - "fanqianghou.com", - "||fanqianghou.com", - ".fanqiangzhe.com", - "||fanqiangzhe.com", - "fapdu.com", - "faproxy.com", - ".fawanghuihui.org", - "fanqiangyakexi.net", - "fail.hk", - "||famunion.com", - ".fan-qiang.com", - ".fangbinxing.com", - "||fangbinxing.com", - "fangeming.com", - ".fangmincn.org", - "||fangmincn.org", - ".fanhaodang.com", - "||fanswong.com", - ".fanyue.info", - ".farwestchina.com", - "en.favotter.net", - "nytimes.map.fastly.net", - "||nytimes.map.fastly.net", - "||fast.wistia.com", - "||fastssh.com", - "||faststone.org", - "favstar.fm", - "||favstar.fm", - "faydao.com/weblog", - ".fc2.com", - ".fc2china.com", - ".fc2cn.com", - "||fc2cn.com", - "fc2blog.net", - "|http://uygur.fc2web.com/", - "video.fdbox.com", - ".fdc64.de", - ".fdc64.org", - ".fdc89.jp", - "||fourface.nodesnoop.com", - "||feelssh.com", - "feer.com", - ".feifeiss.com", - "|http://feitianacademy.org", - ".feitian-california.org", - "||feministteacher.com", - ".fengzhenghu.com", - "||fengzhenghu.com", - ".fengzhenghu.net", - "||fengzhenghu.net", - ".fevernet.com", - "|http://ff.im", - "fffff.at", - "fflick.com", - ".ffvpn.com", - "fgmtv.net", - ".fgmtv.org", - ".fhreports.net", - "|http://fhreports.net", - ".figprayer.com", - "||figprayer.com", - ".fileflyer.com", - "||fileflyer.com", - "|http://feeds.fileforum.com", - ".files2me.com", - ".fileserve.com/file", - "fillthesquare.org", - "filmingfortibet.org", - ".filthdump.com", - ".finchvpn.com", - "||finchvpn.com", - "findmespot.com", - "||findyoutube.com", - "||findyoutube.net", - ".fingerdaily.com", - "finler.net", - ".firearmsworld.net", - "|http://firearmsworld.net", - ".fireofliberty.org", - "||fireofliberty.org", - ".firetweet.io", - "||firetweet.io", - ".flagsonline.it", - "fleshbot.com", - ".fleursdeslettres.com", - "|http://fleursdeslettres.com", - "||flgg.us", - "||flgjustice.org", - "||flickr.com", - "||staticflickr.com", - "flickrhivemind.net", - ".flickriver.com", - ".fling.com", - "||flipkart.com", - "||flog.tw", - ".flyvpn.com", - "||flyvpn.com", - "|http://cn.fmnnow.com", - "fofldfradio.org", - "blog.foolsmountain.com", - ".forum4hk.com", - "fangong.forums-free.com", - "pioneer-worker.forums-free.com", - "|https://ss*.4sqi.net", - "video.foxbusiness.com", - "|http://foxgay.com", - "||fringenetwork.com", - "||flecheinthepeche.fr", - ".fochk.org", - "|http://fochk.org", - "||focustaiwan.tw", - ".focusvpn.com", - "||fofg.org", - ".fofg-europe.net", - ".fooooo.com", - "||fooooo.com", - "footwiball.com", - ".fotile.me", - "||fourthinternational.org", - "||foxdie.us", - "||foxsub.com", - "foxtang.com", - ".fpmt.org", - "|http://fpmt.org", - ".fpmt.tw", - ".fpmt-osel.org", - "||fpmtmexico.org", - "fqok.org", - "||fqrouter.com", - "||franklc.com", - ".freakshare.com", - "|http://freakshare.com", - "||free4u.com.ar", - "free-gate.org", - ".free-hada-now.org", - "free-proxy.cz", - ".free.fr/adsl", - "kineox.free.fr", - "tibetlibre.free.fr", - "||freealim.com", - "whitebear.freebearblog.org", - "||freebrowser.org", - ".freechal.com", - ".freedomchina.info", - "||freedomchina.info", - ".freedomhouse.org", - "||freedomhouse.org", - ".freedomsherald.org", - "||freedomsherald.org", - ".freefq.com", - ".freefuckvids.com", - ".freegao.com", - "||freegao.com", - "freeilhamtohti.org", - ".freekwonpyong.org", - "||saveliuxiaobo.com", - ".freelotto.com", - "||freelotto.com", - "freeman2.com", - ".freeopenvpn.com", - "freemoren.com", - "freemorenews.com", - "freemuse.org/archives/789", - "freenet-china.org", - "freenewscn.com", - "cn.freeones.com", - ".freeoz.org/bbs", - "||freeoz.org", - "||freessh.us", - "free4u.com.ar", - ".free-ssh.com", - "||free-ssh.com", - ".freechina.news/", - "||freechinaforum.org", - "||freechinaweibo.com", - ".freedomcollection.org/interviews/rebiya_kadeer", - ".freeforums.org", - "||freenetproject.org", - ".freeoz.org", - ".freetibet.net", - "||freetibet.org", - ".freetibetanheroes.org", - "|http://freetibetanheroes.org", - ".freeviewmovies.com", - ".freevpn.me", - "|http://freevpn.me", - "||freewallpaper4.me", - ".freewebs.com", - ".freewechat.com", - "||freewechat.com", - "freeweibo.com", - "||freeweibo.com", - ".freexinwen.com", - ".freeyoutubeproxy.net", - "||freeyoutubeproxy.net", - "friendfeed.com", - "friendfeed-media.com/e99a4ebe2fb4c1985c2a58775eb4422961aa5a2e", - "friends-of-tibet.org", - ".friendsoftibet.org", - "freechina.net", - "|http://www.zensur.freerk.com/", - "freevpn.nl", - "freeyellow.com", - "hk.frienddy.com/hk", - "|http://adult.friendfinder.com/", - ".fring.com", - "||fring.com", - ".fromchinatousa.net", - "||frommel.net", - ".frontlinedefenders.org", - ".frootvpn.com", - "||frootvpn.com", - "||fscked.org", - ".fsurf.com", - ".ftv.com.tw", - "fucd.com", - ".fuckcnnic.net", - "||fuckcnnic.net", - "fuckgfw.org", - ".fulione.com", - "|https://fulione.com", - "||fullerconsideration.com", - "fulue.com", - ".funf.tw", - "funp.com", - ".fuq.com", - ".furhhdl.org", - "||furinkan.com", - ".futurechinaforum.org", - "||futuremessage.org", - ".fux.com", - ".fuyin.net", - ".fuyindiantai.org", - ".fuyu.org.tw", - "||fw.cm", - ".fxcm-chinese.com", - "||fxcm-chinese.com", - "fzh999.com", - "fzh999.net", - "fzlm.com", - ".g6hentai.com", - "|http://g6hentai.com", - "||g-queen.com", - "||gabocorp.com", - ".gaeproxy.com", - ".gaforum.org", - ".galaxymacau.com", - "||galenwu.com", - ".galstars.net", - "||game735.com", - "gamebase.com.tw", - "gamejolt.com", - "|http://wiki.gamerp.jp", - "||gamer.com.tw", - ".gamer.com.tw", - ".gamez.com.tw", - "||gamez.com.tw", - ".gamousa.com", - ".gaoming.net", - "||gaoming.net", - "ganges.com", - ".gaopi.net", - "|http://gaopi.net", - ".gaozhisheng.org", - ".gaozhisheng.net", - "gardennetworks.com", - "||gardennetworks.org", - "72.52.81.22", - "||gartlive.com", - "||gate-project.com", - "||gather.com", - ".gatherproxy.com", - "gati.org.tw", - ".gaybubble.com", - ".gaycn.net", - ".gayhub.com", - "||gaymap.cc", - ".gaymenring.com", - ".gaytube.com", - "||images-gaytube.com", - ".gaywatch.com", - "|http://gaywatch.com", - ".gazotube.com", - "||gazotube.com", - "||gcc.org.hk", - "||gclooney.com", - "||gcmasia.com", - ".gcpnews.com", - "|http://gcpnews.com", - ".gdbt.net/forum", - "gdzf.org", - "||geek-art.net", - "geekerhome.com/2010/03/xixiang-project-cross-gfw", - "||geekheart.info", - ".gekikame.com", - "|http://gekikame.com", - ".gelbooru.com", - "|http://gelbooru.com", - ".geocities.co.jp", - ".geocities.com/SiliconValley/Circuit/5683/download.html", - "hk.geocities.com", - "geocities.jp", - ".gerefoundation.org", - "||getastrill.com", - ".getchu.com", - ".getcloak.com", - "||getcloak.com", - "||getfoxyproxy.org", - ".getfreedur.com", - "||getgom.com", - ".geti2p.net", - "||geti2p.net", - ".getlantern.org", - "||getlantern.org", - ".getjetso.com/forum", - "getiton.com", - ".getsocialscope.com", - "||getsync.com", - "gfbv.de", - ".gfgold.com.hk", - ".gfsale.com", - "||gfsale.com", - "gfw.org.ua", - ".gfw.press", - "||gfw.press", - ".ggssl.com", - "||ggssl.com", - ".ghostpath.com", - "||ghostpath.com", - "||ghut.org", - ".giantessnight.com", - "|http://giantessnight.com", - ".gifree.com", - "||giga-web.jp", - "tw.gigacircle.com", - "|http://cn.giganews.com/", - "gigporno.ru", - "||girlbanker.com", - ".git.io", - "||git.io", - "|http://softwaredownload.gitbooks.io", - "github.com/getlantern", - "|https://gist.github.com", - "http://cthlo.github.io/hktv", - "hahaxixi.github.io", - "|https://hahaxixi.github.io", - "||haoel.github.io", - "||rg3.github.io", - "||sikaozhe1997.github.io", - "||sodatea.github.io", - "||terminus2049.github.io", - "||toutyrater.github.io", - "wsgzao.github.io", - "|https://wsgzao.github.io", - "||raw.githubusercontent.com", - ".gizlen.net", - "||gizlen.net", - ".gjczz.com", - "||gjczz.com", - "globaljihad.net", - "globalmediaoutreach.com", - "globalmuseumoncommunism.org", - "||globalrescue.net", - ".globaltm.org", - ".globalvoicesonline.org", - "||globalvoicesonline.org", - "||globalvpn.net", - ".glock.com", - "gluckman.com/DalaiLama", - "gmbd.cn", - "||gmhz.org", - "|http://www.gmiddle.com", - "|http://www.gmiddle.net", - ".gmll.org", - "||gnci.org.hk", - "go-pki.com", - "||goagent.biz", - "||goagentplus.com", - "gobet.cc", - "godfootsteps.org", - "||godfootsteps.org", - "godns.work", - "godsdirectcontact.co.uk", - ".godsdirectcontact.org", - "godsdirectcontact.org.tw", - ".godsimmediatecontact.com", - ".gogotunnel.com", - "||gohappy.com.tw", - ".gokbayrak.com", - ".goldbet.com", - "||goldbetsports.com", - "||goldeneyevault.com", - ".goldenfrog.com", - "||goldenfrog.com", - ".goldjizz.com", - "|http://goldjizz.com", - ".goldstep.net", - "||goldwave.com", - "gongmeng.info", - "gongm.in", - "gongminliliang.com", - ".gongwt.com", - "|http://gongwt.com", - "blog.goo.ne.jp/duck-tail_2009", - ".gooday.xyz", - "|http://gooday.xyz", - ".goodreads.com", - "||goodreads.com", - ".goodreaders.com", - "||goodreaders.com", - ".goodtv.com.tw", - ".goodtv.tv", - "||goofind.com", - ".googlesile.com", - ".gopetition.com", - "||gopetition.com", - ".goproxing.net", - ".gotrusted.com", - "||gotrusted.com", - "||gotw.ca", - "||grammaly.com", - "grandtrial.org", - ".graphis.ne.jp", - "||graphis.ne.jp", - "||graphql.org", - "greatfirewall.biz", - "||greatfirewallofchina.net", - ".greatfirewallofchina.org", - "||greatfirewallofchina.org", - "||greenfieldbookstore.com.hk", - ".greenparty.org.tw", - "||greenpeace.org", - ".greenreadings.com/forum", - "great-firewall.com", - "great-roc.org", - "greatroc.org", - "greatzhonghua.org", - ".greenpeace.com.tw", - ".greenvpn.net", - "||greenvpn.net", - ".greenvpn.org", - "||grotty-monday.com", - "gs-discuss.com", - "||gtricks.com", - "guancha.org", - "guaneryu.com", - ".guardster.com", - ".gun-world.net", - "gunsandammo.com", - "||gutteruncensored.com", - "||gvm.com.tw", - ".gzm.tv", - "||gzone-anime.info", - "||clementine-player.org", - "echofon.com", - "||greasespot.net", - "||www.klip.me", - "@@||site.locql.com", - "||stephaniered.com", - "@@||download.syniumsoftware.com", - "|http://ub0.cc", - "wozy.in", - "gospelherald.com", - "||gospelherald.com", - "|http://hk.gradconnection.com/", - "||grangorz.org", - "greatfire.org", - "||greatfire.org", - "greatfirewallofchina.org", - "||greatroc.tw", - ".gts-vpn.com", - "|http://gts-vpn.com", - ".gu-chu-sum.org", - "|http://gu-chu-sum.org", - ".guaguass.com", - "|http://guaguass.com", - ".guaguass.org", - "|http://guaguass.org", - ".guangming.com.my", - "guishan.org", - "||guishan.org", - ".gumroad.com", - "||gumroad.com", - "||gunsamerica.com", - "guruonline.hk", - "|http://gvlib.com", - ".gyalwarinpoche.com", - ".gyatsostudio.com", - ".h528.com", - ".h5dm.com", - ".h5galgame.me", - "||h-china.org", - ".h-moe.com", - "|http://h-moe.com", - "h1n1china.org", - ".hacg.club", - "||hacg.club", - ".hacg.in", - "|http://hacg.in", - ".hacg.li", - "|http://hacg.li", - ".hacg.me", - "|http://hacg.me", - ".hacg.red", - "|http://hacg.red", - ".hacken.cc/bbs", - ".hacker.org", - "||hackthatphone.net", - "hahlo.com", - "||hakkatv.org.tw", - ".handcraftedsoftware.org", - "|http://bbs.hanminzu.org/", - ".hanunyi.com", - ".hao.news/news", - "|http://ae.hao123.com", - "|http://ar.hao123.com", - "|http://br.hao123.com", - "|http://en.hao123.com", - "|http://id.hao123.com", - "|http://jp.hao123.com", - "|http://ma.hao123.com", - "|http://mx.hao123.com", - "|http://sa.hao123.com", - "|http://th.hao123.com", - "|http://tw.hao123.com", - "|http://vn.hao123.com", - "|http://hk.hao123img.com", - "|http://ld.hao123img.com", - "||happy-vpn.com", - ".haproxy.org", - "||hardsextube.com", - ".harunyahya.com", - "|http://harunyahya.com", - "bbs.hasi.wang", - "have8.com", - "@@||haygo.com", - ".hclips.com", - "||hdlt.me", - "||hdtvb.net", - ".hdzog.com", - "|http://hdzog.com", - "||heartyit.com", - ".heavy-r.com", - ".hec.su", - "|http://hec.su", - ".hecaitou.net", - "||hecaitou.net", - ".hechaji.com", - "||hechaji.com", - "||heeact.edu.tw", - ".hegre-art.com", - "|http://hegre-art.com", - "||cdn.helixstudios.net", - "||helplinfen.com", - "||helloandroid.com", - "||helloqueer.com", - ".helloss.pw", - "hellotxt.com", - "||hellotxt.com", - ".hentai.to", - ".hellouk.org/forum/lofiversion", - ".helpeachpeople.com", - "||helpeachpeople.com", - "||helpster.de", - ".helpzhuling.org", - "hentaitube.tv", - ".hentaivideoworld.com", - "||id.heroku.com", - "heqinglian.net", - "||heungkongdiscuss.com", - ".hexieshe.com", - "||hexieshe.com", - "||hexieshe.xyz", - "||hexxeh.net", - "app.heywire.com", - ".heyzo.com", - ".hgseav.com", - ".hhdcb3office.org", - ".hhthesakyatrizin.org", - "hi-on.org.tw", - "hidden-advent.org", - "||hidden-advent.org", - "hidecloud.com/blog/2008/07/29/fuck-beijing-olympics.html", - "||hide.me", - ".hidein.net", - ".hideipvpn.com", - "||hideipvpn.com", - ".hideman.net", - "||hideman.net", - "hideme.nl", - "||hidemy.name", - ".hidemyass.com", - "||hidemyass.com", - "hidemycomp.com", - "||hidemycomp.com", - ".hihiforum.com", - ".hihistory.net", - "||hihistory.net", - ".higfw.com", - "highpeakspureearth.com", - "||highrockmedia.com", - "||hiitch.com", - "||hikinggfw.org", - ".hilive.tv", - ".himalayan-foundation.org", - "himalayanglacier.com", - ".himemix.com", - "||himemix.com", - ".himemix.net", - "times.hinet.net", - ".hitomi.la", - "|http://hitomi.la", - ".hiwifi.com", - "@@||hiwifi.com", - "hizbuttahrir.org", - "hizb-ut-tahrir.info", - "hizb-ut-tahrir.org", - ".hjclub.info", - ".hk-pub.com/forum", - "|http://hk-pub.com", - ".hk01.com", - "||hk01.com", - ".hk32168.com", - "||hk32168.com", - "||hkacg.com", - "||hkacg.net", - ".hkatvnews.com", - "hkbc.net", - ".hkbf.org", - ".hkbookcity.com", - "||hkbookcity.com", - ".hkchurch.org", - "hkci.org.hk", - ".hkcmi.edu", - "||hkcnews.com", - "||hkcoc.com", - "hkday.net", - ".hkdailynews.com.hk/china.php", - "hkdf.org", - ".hkej.com", - ".hkepc.com/forum/viewthread.php?tid=1153322", - "china.hket.com", - "||hkfaa.com", - "hkfreezone.com", - "hkfront.org", - "m.hkgalden.com", - "|https://m.hkgalden.com", - ".hkgreenradio.org/home", - ".hkheadline.com*blog", - ".hkheadline.com/instantnews", - "hkhkhk.com", - "hkhrc.org.hk", - "hkhrm.org.hk", - "||hkip.org.uk", - "1989report.hkja.org.hk", - "hkjc.com", - ".hkjp.org", - ".hklft.com", - ".hklts.org.hk", - "||hklts.org.hk", - "news.hkpeanut.com", - "hkptu.org", - ".hkreporter.com", - "||hkreporter.com", - "|http://hkupop.hku.hk/", - ".hkusu.net", - "||hkusu.net", - ".hkvwet.com", - ".hkwcc.org.hk", - "||hkzone.org", - ".hmonghot.com", - "|http://hmonghot.com", - ".hmv.co.jp/", - "hnjhj.com", - "||hnjhj.com", - ".hnntube.com", - "||hola.com", - "||hola.org", - "holymountaincn.com", - "holyspiritspeaks.org", - "||holyspiritspeaks.org", - "||derekhsu.homeip.net", - ".homeperversion.com", - "|http://homeservershow.com", - "|http://old.honeynet.org/scans/scan31/sub/doug_eric/spam_translation.html", - ".hongkongfp.com", - "||hongkongfp.com", - "hongmeimei.com", - "||hongzhi.li", - ".hootsuite.com", - "||hootsuite.com", - ".hopedialogue.org", - "|http://hopedialogue.org", - ".hopto.org", - ".hornygamer.com", - ".hornytrip.com", - "|http://hornytrip.com", - ".hotav.tv", - ".hotels.cn", - "hotfrog.com.tw", - "hotgoo.com", - ".hotpornshow.com", - "hotpot.hk", - ".hotshame.com", - "||hotspotshield.com", - ".hotvpn.com", - "||hotvpn.com", - "||hougaige.com", - "||howtoforge.com", - "||hoxx.com", - ".hqcdp.org", - "||hqcdp.org", - "||hqjapanesesex.com", - "hqmovies.com", - ".hrcir.com", - ".hrcchina.org", - ".hrea.org", - ".hrichina.org", - "||hrichina.org", - ".hrtsea.com", - ".hrw.org", - "||hrw.org", - "hrweb.org", - "||hsjp.net", - "||hsselite.com", - "|http://hst.net.tw", - ".hstern.net", - ".hstt.net", - ".htkou.net", - "||htkou.net", - ".hua-yue.net", - ".huaglad.com", - "||huaglad.com", - ".huanghuagang.org", - "||huanghuagang.org", - ".huangyiyu.com", - ".huaren.us", - "||huaren.us", - ".huaren4us.com", - ".huashangnews.com", - "|http://huashangnews.com", - "bbs.huasing.org", - "huaxia-news.com", - "huaxiabao.org", - "huaxin.ph", - "||huayuworld.org", - ".huffingtonpost.com/rebiya-kadeer", - "||hugoroy.eu", - "||huhaitai.com", - "||huhamhire.com", - "huiyi.in", - ".hulkshare.com", - "humanrightsbriefing.org", - "||hung-ya.com", - "||hungerstrikeforaids.org", - "||huping.net", - "hurgokbayrak.com", - ".hurriyet.com.tr", - ".hut2.ru", - "||hutianyi.net", - "hutong9.net", - "huyandex.com", - ".hwadzan.tw", - "||hwayue.org.tw", - "||hwinfo.com", - "||hxwk.org", - "hxwq.org", - "||hyperrate.com", - "ebook.hyread.com.tw", - "||ebook.hyread.com.tw", - "||i1.hk", - "||i2p2.de", - "||i2runner.com", - "||i818hk.com", - ".i-cable.com", - ".i-part.com.tw", - ".iamtopone.com", - "iask.ca", - "||iask.ca", - "iask.bz", - "||iask.bz", - ".iav19.com", - "ibiblio.org/pub/packages/ccic", - ".iblist.com", - "||iblogserv-f.net", - "ibros.org", - "|http://cn.ibtimes.com", - ".ibvpn.com", - "||ibvpn.com", - "icams.com", - "blogs.icerocket.com/tag", - ".icij.org", - "||icij.org", - "||icl-fi.org", - ".icoco.com", - "||icoco.com", - "||furbo.org", - "||warbler.iconfactory.net", - "||iconpaper.org", - "||icu-project.org", - "w.idaiwan.com/forum", - "||iddddg.com", - "idemocracy.asia", - ".identi.ca", - "||identi.ca", - "||idiomconnection.com", - "|http://www.idlcoyote.com", - ".idouga.com", - ".idreamx.com", - "forum.idsam.com", - ".idv.tw", - ".ieasy5.com", - "|http://ieasy5.com", - ".ied2k.net", - ".ienergy1.com", - "|http://if.ttt/", - "ifanqiang.com", - ".ifcss.org", - "||ifcss.org", - "ifjc.org", - ".ift.tt", - "|http://ift.tt", - "||ifreewares.com", - "||igcd.net", - ".igfw.net", - "||igfw.net", - ".igfw.tech", - "||igfw.tech", - ".igmg.de", - "||ignitedetroit.net", - ".igotmail.com.tw", - "||igvita.com", - "||ihakka.net", - ".ihao.org/dz5", - "||iicns.com", - ".ikstar.com", - "||illusionfactory.com", - "||ilove80.be", - "||im.tv", - "@@||myvlog.im.tv", - "||im88.tw", - ".imgchili.net", - "|http://imgchili.net", - ".imageab.com", - ".imagefap.com", - "||imagefap.com", - "||imageflea.com", - "imageshack.us", - "||imagevenue.com", - "||imagezilla.net", - ".imb.org", - "|http://imb.org", - "|http://www.imdb.com/name/nm0482730", - ".imdb.com/title/tt0819354", - ".imdb.com/title/tt1540068", - ".imdb.com/title/tt4908644", - ".img.ly", - "||img.ly", - ".imgur.com", - "||imgur.com", - ".imkev.com", - "||imkev.com", - ".imlive.com", - ".immoral.jp", - "impact.org.au", - "impp.mn", - "|http://tech2.in.com/video/", - "in99.org", - "in-disguise.com", - ".incapdns.net", - ".incloak.com", - "||incloak.com", - "||incredibox.fr", - "||indiandefensenews.in", - "timesofindia.indiatimes.com/dalai", - "timesofindia.indiatimes.com/defaultinterstitial.cms", - ".indiemerch.com", - "||indiemerch.com", - "info-graf.fr", - "website.informer.com", - ".initiativesforchina.org", - ".inkui.com", - ".inmediahk.net", - "||inmediahk.net", - "||innermongolia.org", - "|http://blog.inoreader.com", - ".inote.tw", - ".insecam.org", - "|http://insecam.org", - "||insidevoa.com", - ".institut-tibetain.org", - "|http://internet.org/", - "internetdefenseleague.org", - "internetfreedom.org", - "||internetpopculture.com", - ".inthenameofconfuciusmovie.com", - "||inthenameofconfuciusmovie.com", - "inxian.com", - "||inxian.com", - "ipalter.com", - ".ipfire.org", - "||iphone4hongkong.com", - "||iphonehacks.com", - "||iphonetaiwan.org", - "||iphonix.fr", - "||ipicture.ru", - ".ipjetable.net", - "||ipjetable.net", - ".ipobar.com/read.php?", - "ipoock.com/img", - ".iportal.me", - "|http://iportal.me", - "||ippotv.com", - ".ipredator.se", - "||ipredator.se", - ".iptv.com.tw", - "||iptvbin.com", - "||ipvanish.com", - "iredmail.org", - "chinese.irib.ir", - "||ironbigfools.compython.net", - "||ironpython.net", - ".ironsocket.com", - "||ironsocket.com", - ".is.gd", - ".islahhaber.net", - ".islam.org.hk", - "|http://islam.org.hk", - ".islamawareness.net/Asia/China", - ".islamhouse.com", - "||islamhouse.com", - ".islamicity.com", - ".islamicpluralism.org", - ".islamtoday.net", - ".isaacmao.com", - "||isaacmao.com", - "||isgreat.org", - "||ismaelan.com", - ".ismalltits.com", - "||ismprofessional.net", - "isohunt.com", - "||israbox.com", - ".issuu.com", - "||issuu.com", - ".istars.co.nz", - "oversea.istarshine.com", - "||oversea.istarshine.com", - "blog.istef.info/2007/10/21/myentunnel", - ".istiqlalhewer.com", - ".istockphoto.com", - "isunaffairs.com", - "isuntv.com", - "itaboo.info", - "||itaboo.info", - ".italiatibet.org", - "download.ithome.com.tw", - "ithelp.ithome.com.tw", - "||itshidden.com", - ".itsky.it", - ".itweet.net", - "|http://itweet.net", - ".iu45.com", - ".iuhrdf.org", - "||iuhrdf.org", - ".iuksky.com", - ".ivacy.com", - "||ivacy.com", - ".iverycd.com", - ".ivpn.net", - "||ixquick.com", - ".ixxx.com", - "iyouport.com", - "||iyouport.com", - ".izaobao.us", - "||gmozomg.izihost.org", - ".izles.net", - ".izlesem.org", - "||j.mp", - "blog.jackjia.com", - "jamaat.org", - ".jamyangnorbu.com", - "|http://jamyangnorbu.com", - ".jandyx.com", - "||janwongphoto.com", - "||japan-whores.com", - ".jav.com", - ".jav101.com", - ".jav2be.com", - "||jav2be.com", - ".jav68.tv", - ".javakiba.org", - "|http://javakiba.org", - ".javbus.com", - "||javbus.com", - "||javfor.me", - ".javhd.com", - ".javhip.com", - ".javmobile.net", - "|http://javmobile.net", - ".javmoo.com", - ".javseen.com", - "|http://javseen.com", - "jbtalks.cc", - "jbtalks.com", - "jbtalks.my", - ".jdwsy.com", - "jeanyim.com", - "||jfqu36.club", - "||jfqu37.xyz", - "||jgoodies.com", - ".jiangweiping.com", - "||jiangweiping.com", - "||jiaoyou8.com", - ".jiehua.cz", - "||hk.jiepang.com", - "||tw.jiepang.com", - "jieshibaobao.com", - ".jigglegifs.com", - "56cun04.jigsy.com", - "jigong1024.com", - "daodu14.jigsy.com", - "specxinzl.jigsy.com", - "wlcnew.jigsy.com", - ".jihadology.net", - "|http://jihadology.net", - "jinbushe.org", - "||jinbushe.org", - ".jingsim.org", - "zhao.jinhai.de", - "jingpin.org", - "||jingpin.org", - "jinpianwang.com", - ".jinroukong.com", - "ac.jiruan.net", - "||jitouch.com", - ".jizzthis.com", - "jjgirls.com", - ".jkb.cc", - "|http://jkb.cc", - "jkforum.net", - "||jma.go.jp", - "research.jmsc.hku.hk/social", - "weiboscope.jmsc.hku.hk", - ".jmscult.com", - "|http://jmscult.com", - "||joachims.org", - "||jobso.tv", - ".sunwinism.joinbbs.net", - ".journalchretien.net", - "||journalofdemocracy.org", - ".joymiihub.com", - ".joyourself.com", - "jpopforum.net", - "||fiddle.jshell.net", - ".jubushoushen.com", - "||jubushoushen.com", - ".juhuaren.com", - "||juliereyc.com", - "||junauza.com", - ".june4commemoration.org", - ".junefourth-20.net", - "||junefourth-20.net", - "||bbs.junglobal.net", - ".juoaa.com", - "|http://juoaa.com", - "justfreevpn.com", - ".justicefortenzin.org", - "justpaste.it", - "justtristan.com", - "juyuange.org", - "juziyue.com", - "||juziyue.com", - "||jwmusic.org", - "@@||music.jwmusic.org", - ".jyxf.net", - "||k-doujin.net", - "||ka-wai.com", - ".kagyu.org", - "||kagyu.org.za", - ".kagyumonlam.org", - ".kagyunews.com.hk", - ".kagyuoffice.org", - "||kagyuoffice.org", - "||kagyuoffice.org.tw", - ".kaiyuan.de", - ".kakao.com", - "||kakao.com", - ".kalachakralugano.org", - ".kankan.today", - ".kannewyork.com", - "||kannewyork.com", - ".kanshifang.com", - "||kanshifang.com", - "||kantie.org", - "kanzhongguo.com", - "kanzhongguo.eu", - ".kaotic.com", - "||karayou.com", - "karkhung.com", - ".karmapa.org", - ".karmapa-teachings.org", - "||kawase.com", - ".kba-tx.org", - ".kcoolonline.com", - ".kebrum.com", - "||kebrum.com", - ".kechara.com", - ".keepandshare.com/visit/visit_page.php?i=688154", - ".keezmovies.com", - ".kendincos.net", - ".kenengba.com", - "||kenengba.com", - "||keontech.net", - ".kepard.com", - "||kepard.com", - "wiki.keso.cn/Home", - "||keycdn.com", - ".khabdha.org", - ".khmusic.com.tw", - "||kichiku-doujinko.com", - ".kik.com", - "||kik.com", - "bbs.kimy.com.tw", - ".kindleren.com", - "|http://kindleren.com", - "|http://www.kindleren.com", - ".kingdomsalvation.org", - "||kingdomsalvation.org", - "kinghost.com", - "||kingstone.com.tw", - ".kink.com", - ".kinokuniya.com", - "||kinokuniya.com", - "killwall.com", - "||killwall.com", - "||kinmen.travel", - ".kir.jp", - ".kissbbao.cn", - "|http://kiwi.kz", - "||kk-whys.co.jp", - ".kmuh.org.tw", - ".knowledgerush.com/kr/encyclopedia", - ".kobo.com", - "||kobo.com", - ".kobobooks.com", - "||kobobooks.com", - "||kodingen.com", - "@@||www.kodingen.com", - "||kompozer.net", - ".konachan.com", - "|http://konachan.com", - ".kone.com", - "||koolsolutions.com", - ".koornk.com", - "||koornk.com", - "||koranmandarin.com", - ".korenan2.com", - "|http://gojet.krtco.com.tw", - ".ksdl.org", - ".ksnews.com.tw", - "||ktzhk.com", - ".kui.name/event", - "kun.im", - ".kurashsultan.com", - "||kurtmunger.com", - "kusocity.com", - "||kwcg.ca", - "kwongwah.com.my", - ".kxsw.life", - "||kxsw.life", - ".kyofun.com", - "kyohk.net", - "||kyoyue.com", - ".kyzyhello.com", - "||kyzyhello.com", - ".kzeng.info", - "||kzeng.info", - "la-forum.org", - "ladbrokes.com", - "||labiennale.org", - ".lagranepoca.com", - "||lagranepoca.com", - ".lalulalu.com", - ".lama.com.tw", - "||lama.com.tw", - ".lamayeshe.com", - "|http://lamayeshe.com", - "|http://www.lamenhu.com", - ".lamnia.co.uk", - "||lamnia.co.uk", - "lamrim.com", - ".lanterncn.cn", - "|http://lanterncn.cn", - ".lantosfoundation.org", - ".laod.cn", - "|http://laod.cn", - "laogai.org", - "||laogai.org", - "laomiu.com", - ".laoyang.info", - "|http://laoyang.info", - "||laptoplockdown.com", - ".laqingdan.net", - "||laqingdan.net", - "||larsgeorge.com", - ".lastcombat.com", - "|http://lastcombat.com", - "||lastfm.es", - "latelinenews.com", - ".latibet.org", - "||le-vpn.com", - ".leafyvpn.net", - "||leafyvpn.net", - "leeao.com.cn/bbs/forum.php", - "lefora.com", - "||left21.hk", - ".legalporno.com", - ".legsjapan.com", - "|http://leirentv.ca", - "leisurecafe.ca", - "||lematin.ch", - ".lemonde.fr", - "||lenwhite.com", - "lerosua.org", - "||lerosua.org", - "blog.lester850.info", - "||lesoir.be", - ".letou.com", - "letscorp.net", - "||letscorp.net", - "||ss.levyhsu.com", - "||cdn.assets.lfpcontent.com", - ".lhakar.org", - "|http://lhakar.org", - ".lhasocialwork.org", - ".liangyou.net", - "||liangyou.net", - ".lianyue.net", - "||liaowangxizang.net", - ".liaowangxizang.net", - "||liberal.org.hk", - ".libertytimes.com.tw", - "blogs.libraryinformationtechnology.com/jxyz", - ".lidecheng.com/blog/fucking-gfw", - ".lighten.org.tw", - ".lightnovel.cn", - "@@|https://www.lightnovel.cn", - "limiao.net", - "linkuswell.com", - "abitno.linpie.com/use-ipv6-to-fuck-gfw", - "||line.me", - "||line-apps.com", - ".linglingfa.com", - "||lingvodics.com", - ".link-o-rama.com", - "|http://link-o-rama.com", - ".linkideo.com", - "||api.linksalpha.com", - "||apidocs.linksalpha.com", - "||www.linksalpha.com", - "||help.linksalpha.com", - "||linux.org.hk", - "linuxtoy.org/archives/installing-west-chamber-on-ubuntu", - ".lionsroar.com", - ".lipuman.com", - "||liquidvpn.com", - "||greatfire.us7.list-manage.com", - "||listentoyoutube.com", - "listorious.com", - ".liu-xiaobo.org", - "||liudejun.com", - ".liuhanyu.com", - ".liujianshu.com", - "||liujianshu.com", - ".liuxiaobo.net", - "|http://liuxiaobo.net", - "liuxiaotong.com", - "||liuxiaotong.com", - ".livedoor.jp", - ".liveleak.com", - "||liveleak.com", - ".livestation.com", - "livestream.com", - "||livestream.com", - "||livingonline.us", - "||livingstream.com", - "||livevideo.com", - ".livevideo.com", - ".liwangyang.com", - "lizhizhuangbi.com", - "lkcn.net", - ".llss.me/", - ".load.to", - ".lobsangwangyal.com", - ".localdomain.ws", - "||localdomain.ws", - "localpresshk.com", - "||lockestek.com", - "logbot.net", - "||logiqx.com", - "secure.logmein.com", - "||secure.logmein.com", - ".londonchinese.ca", - ".longhair.hk", - "longmusic.com", - "||longtermly.net", - "||lookpic.com", - ".looktoronto.com", - "|http://looktoronto.com", - ".lotsawahouse.org/tibetan-masters/fourteenth-dalai-lama", - ".lotuslight.org.hk", - ".lotuslight.org.tw", - "hkreporter.loved.hk", - "||lpsg.com", - "||lrfz.com", - ".lrip.org", - "||lrip.org", - ".lsd.org.hk", - "||lsd.org.hk", - "lsforum.net", - ".lsm.org", - "||lsm.org", - ".lsmchinese.org", - "||lsmchinese.org", - ".lsmkorean.org", - "||lsmkorean.org", - ".lsmradio.com/rad_archives", - ".lsmwebcast.com", - ".ltn.com.tw", - "||ltn.com.tw", - ".luke54.com", - ".luke54.org", - ".lupm.org", - "||lupm.org", - "||lushstories.com", - "luxebc.com", - "lvhai.org", - "||lvhai.org", - "||lvv2.com", - ".lyfhk.net", - "|http://lyfhk.net", - ".lzmtnews.org", - "||lzmtnews.org", - "http://*.m-team.cc", - ".macrovpn.com", - "macts.com.tw", - "||mad-ar.ch", - "||madrau.com", - "||madthumbs.com", - "||magic-net.info", - "mahabodhi.org", - "my.mail.ru", - ".maiplus.com", - "|http://maiplus.com", - ".maizhong.org", - "makkahnewspaper.com", - ".mamingzhe.com", - "manicur4ik.ru", - ".maplew.com", - "|http://maplew.com", - "||marc.info", - "marguerite.su", - "||martincartoons.com", - "maskedip.com", - ".maiio.net", - ".mail-archive.com", - ".malaysiakini.com", - "||makemymood.com", - ".manchukuo.net", - ".maniash.com", - "|http://maniash.com", - ".mansion.com", - ".mansionpoker.com", - "||martau.com", - "|http://blog.martinoei.com", - ".martsangkagyuofficial.org", - "|http://martsangkagyuofficial.org", - "maruta.be/forget", - ".marxist.com", - "||marxist.net", - ".marxists.org/chinese", - "||matainja.com", - "||mathable.io", - "||mathiew-badimon.com", - "||matsushimakaede.com", - "|http://maturejp.com", - "mayimayi.com", - ".maxing.jp", - ".mcaf.ee", - "|http://mcaf.ee", - "||mcadforums.com", - "mcfog.com", - "mcreasite.com", - ".md-t.org", - "||md-t.org", - "||meansys.com", - ".media.org.hk", - ".mediachinese.com", - "||mediachinese.com", - ".mediafire.com/?", - ".mediafire.com/download", - ".mediafreakcity.com", - "||mediafreakcity.com", - ".medium.com", - "||medium.com", - ".meetav.com", - "||meetup.com", - "mefeedia.com", - "jihadintel.meforum.org", - "||mega.nz", - "||megaproxy.com", - "||megarotic.com", - "megavideo.com", - "||megurineluka.com", - "meirixiaochao.com", - ".meltoday.com", - ".memehk.com", - "||memehk.com", - "memorybbs.com", - ".memri.org", - ".memrijttm.org", - ".mercyprophet.org", - "|http://mercyprophet.org", - "||mergersandinquisitions.org", - ".meridian-trust.org", - "|http://meridian-trust.org", - ".meripet.biz", - "|http://meripet.biz", - ".meripet.com", - "|http://meripet.com", - "merit-times.com.tw", - "meshrep.com", - ".mesotw.com/bbs", - "metacafe.com/watch", - "||meteorshowersonline.com", - "|http://www.metro.taipei/", - ".metrohk.com.hk/?cmd=detail&categoryID=2", - "||metrolife.ca", - ".metroradio.com.hk", - "|http://metroradio.com.hk", - "meyou.jp", - ".meyul.com", - "||mgoon.com", - "||mgstage.com", - "||mh4u.org", - "mhradio.org", - "|http://michaelanti.com", - "||michaelmarketl.com", - "|http://bbs.mikocon.com", - ".microvpn.com", - "|http://microvpn.com", - "middle-way.net", - ".mihk.hk/forum", - ".mihr.com", - "mihua.org", - "||mikesoltys.com", - ".milph.net", - "|http://milph.net", - ".milsurps.com", - "mimiai.net", - ".mimivip.com", - ".mimivv.com", - ".mindrolling.org", - "|http://mindrolling.org", - ".minghui.or.kr", - "|http://minghui.or.kr", - "minghui.org", - "||minghui.org", - "minghui-a.org", - "minghui-b.org", - "minghui-school.org", - ".mingjinglishi.com", - "||mingjinglishi.com", - "mingjingnews.com", - "||mingjingtimes.com", - ".mingpao.com", - "||mingpao.com", - ".mingpaocanada.com", - ".mingpaomonthly.com", - "|http://mingpaomonthly.com", - "mingpaonews.com", - ".mingpaony.com", - ".mingpaosf.com", - ".mingpaotor.com", - ".mingpaovan.com", - ".mingshengbao.com", - ".minhhue.net", - ".miniforum.org", - ".ministrybooks.org", - ".minzhuhua.net", - "||minzhuhua.net", - "minzhuzhanxian.com", - "minzhuzhongguo.org", - "||miroguide.com", - "mirrorbooks.com", - ".mist.vip", - "thecenter.mit.edu", - ".mitao.com.tw", - ".mitbbs.com", - "||mitbbs.com", - "mitbbsau.com", - ".mixero.com", - "||mixero.com", - "mixpod.com", - ".mixx.com", - "||mixx.com", - "||mizzmona.com", - ".mk5000.com", - ".mlcool.com", - "||mlzs.work", - ".mm-cg.com", - "||mmaaxx.com", - ".mmmca.com", - "mnewstv.com", - "||mobatek.net", - ".mobile01.com", - "||mobile01.com", - "||mobileways.de", - ".mobypicture.com", - "|http://moby.to", - "||moeerolibrary.com", - "wiki.moegirl.org", - ".mofaxiehui.com", - ".mofos.com", - "||mog.com", - "molihua.org", - "||mondex.org", - ".money-link.com.tw", - "|http://money-link.com.tw", - "|http://www.monlamit.org", - ".moonbbs.com", - "||moonbbs.com", - "c1522.mooo.com", - "||monitorchina.org", - "bbs.morbell.com", - "||morningsun.org", - "||moroneta.com", - ".motherless.com", - "|http://motherless.com", - "motor4ik.ru", - ".mousebreaker.com", - ".movements.org", - "||movements.org", - "||moviefap.com", - "||www.moztw.org", - ".mp3buscador.com", - "mp3ye.eu", - "||mpettis.com", - "mpfinance.com", - "mpinews.com", - "mponline.hk", - ".mqxd.org", - "|http://mqxd.org", - "mrtweet.com", - "||mrtweet.com", - "news.hk.msn.com", - "news.msn.com.tw", - "msguancha.com", - ".mswe1.org", - "|http://mswe1.org", - "||mthruf.com", - "muchosucko.com", - "||multiply.com", - "multiproxy.org", - "multiupload.com", - ".mullvad.net", - "||mullvad.net", - ".mummysgold.com", - ".murmur.tw", - "|http://murmur.tw", - ".musicade.net", - ".muslimvideo.com", - "||muzi.com", - "||muzi.net", - "||mx981.com", - ".my-formosa.com", - ".my-proxy.com", - ".my-private-network.co.uk", - "||my-private-network.co.uk", - "forum.my903.com", - ".myactimes.com/actimes", - "||myanniu.com", - ".myaudiocast.com", - "||myaudiocast.com", - ".myav.com.tw/bbs", - ".mybbs.us", - ".myca168.com", - ".mycanadanow.com", - "||bbs.mychat.to", - "||mychinamyhome.com", - ".mychinamyhome.com", - ".mychinanet.com", - ".mychinanews.com", - "||mychinanews.com", - ".mychinese.news", - "||mycnnews.com", - "||mykomica.org", - "mycould.com/discuz", - ".myeasytv.com", - "||myeclipseide.com", - ".myforum.com.hk", - "||myforum.com.hk", - "||myforum.com.uk", - ".myfreecams.com", - ".myfreepaysite.com", - ".myfreshnet.com", - ".myiphide.com", - "||myiphide.com", - "forum.mymaji.com", - "mymediarom.com/files/box", - "||mymoe.moe", - "||mymusic.net.tw", - "||myparagliding.com", - "||mypopescu.com", - "myradio.hk/podcast", - ".myreadingmanga.info", - "mysinablog.com", - ".myspace.com", - "||myspacecdn.com", - ".mytalkbox.com", - ".mytizi.com", - "||naacoalition.org", - "old.nabble.com", - "||naitik.net", - ".nakuz.com/bbs", - "||nalandabodhi.org", - "||nalandawest.org", - ".namgyal.org", - "namgyalmonastery.org", - "||namsisi.com", - ".nanyang.com", - "||nanyang.com", - ".nanyangpost.com", - "||nanyangpost.com", - ".nanzao.com", - "||jpl.nasa.gov", - "||pds.nasa.gov", - "||solarsystem.nasa.gov", - ".nakido.com", - "||nakido.com", - ".naol.ca", - ".naol.cc", - "uighur.narod.ru", - ".nat.moe", - "||nat.moe", - "cyberghost.natado.com", - "||national-lottery.co.uk", - "news.nationalgeographic.com/news/2014/06/140603-tiananmen-square", - ".nationsonline.org/oneworld/tibet", - "||line.naver.jp", - "||navyfamily.navy.mil", - "||navyreserve.navy.mil", - "||nko.navy.mil", - "||usno.navy.mil", - "naweeklytimes.com", - ".nbtvpn.com", - "|http://nbtvpn.com", - "nccwatch.org.tw", - ".nch.com.tw", - ".ncn.org", - "||ncn.org", - "||etools.ncol.com", - ".nde.de", - ".ndr.de", - ".ned.org", - "||nekoslovakia.net", - "||nepusoku.com", - "||net-fits.pro", - "bbs.netbig.com", - ".netbirds.com", - "netcolony.com", - "bolin.netfirms.com", - "||netme.cc", - "netsneak.com", - ".network54.com", - "networkedblogs.com", - ".networktunnel.net", - "neverforget8964.org", - "new-3lunch.net", - ".new-akiba.com", - ".new96.ca", - ".newcenturymc.com", - "|http://newcenturymc.com", - "newcenturynews.com", - "||newchen.com", - ".newchen.com", - ".newgrounds.com", - "newipnow.com", - ".newlandmagazine.com.au", - ".newnews.ca", - "news100.com.tw", - "newschinacomment.org", - ".newscn.org", - "||newscn.org", - "newspeak.cc/story", - ".newsancai.com", - "||newsancai.com", - ".newsdetox.ca", - ".newsdh.com", - "||newstamago.com", - "||newstapa.org", - "newstarnet.com", - ".newtaiwan.com.tw", - "newtalk.tw", - "||newtalk.tw", - "newyorktimes.com", - "||nexon.com", - ".next11.co.jp", - ".nextmag.com.tw", - ".nextmedia.com", - "||nexton-net.jp", - "nexttv.com.tw", - ".nfjtyd.com", - "||co.ng.mil", - "||nga.mil", - "ngensis.com", - ".nhentai.net", - "|http://nhentai.net", - ".nhk-ondemand.jp", - ".nicovideo.jp/watch", - "||nicovideo.jp", - "||nighost.org", - "av.nightlife141.com", - "ninecommentaries.com", - ".ninjacloak.com", - "||ninjaproxy.ninja", - "nintendium.com", - "taiwanyes.ning.com", - "usmgtcg.ning.com/forum", - "||niusnews.com", - "||njactb.org", - "njuice.com", - "||njuice.com", - "nlfreevpn.com", - ".ddns.net/", - ".gooddns.info", - "||gotdns.ch", - ".maildns.xyz", - ".no-ip.org", - ".opendn.xyz", - ".servehttp.com", - "sytes.net", - ".whodns.xyz", - ".zapto.org", - "|http://dynupdate.no-ip.com/", - "||nobel.se", - "nobelprize.org/nobel_prizes/peace/laureates/1989", - "nobelprize.org/nobel_prizes/peace/laureates/2010", - "nobodycanstop.us", - "||nobodycanstop.us", - "||nokogiri.org", - "||nokola.com", - "noodlevpn.com", - ".norbulingka.org", - "nordvpn.com", - "||nordvpn.com", - "||novelasia.com", - ".news.now.com", - "|http://news.now.com", - "news.now.com%2Fhome", - "||nownews.com", - ".nowtorrents.com", - ".noypf.com", - "||noypf.com", - "||npa.go.jp", - ".npnt.me", - "|http://npnt.me", - ".nps.gov", - ".nradio.me", - "|http://nradio.me", - ".nrk.no", - "||nrk.no", - ".ntd.tv", - "||ntd.tv", - ".ntdtv.com", - "||ntdtv.com", - ".ntdtv.co.kr", - "ntdtv.ca", - "ntdtv.org", - "ntdtv.ru", - "ntdtvla.com", - ".ntrfun.com", - "||cbs.ntu.edu.tw", - "||media.nu.nl", - ".nubiles.net", - "||nuexpo.com", - ".nukistream.com", - "||nurgo-software.com", - "||nutaku.net", - ".nuvid.com", - "||nvdst.com", - "nuzcom.com", - ".nvquan.org", - ".nvtongzhisheng.org", - "|http://nvtongzhisheng.org", - ".nwtca.org", - "|http://nyaa.eu", - "||nyaa.si", - ".nydus.ca", - "nylon-angel.com", - "nylonstockingsonline.com", - ".nzchinese.com", - "||nzchinese.net.nz", - "observechina.net", - ".obutu.com", - "ocaspro.com", - "occupytiananmen.com", - "oclp.hk", - ".ocreampies.com", - "||october-review.org", - "offbeatchina.com", - "officeoftibet.com", - "|http://ofile.org", - "||ogaoga.org", - "twtr2src.ogaoga.org", - ".ogate.org", - "||ogate.org", - "www2.ohchr.org/english/bodies/cat/docs/ngos/II_China_41.pdf", - ".oikos.com.tw/v4", - ".oiktv.com", - "oizoblog.com", - ".ok.ru", - "||ok.ru", - ".okayfreedom.com", - "||okayfreedom.com", - "okk.tw", - "|http://filmy.olabloga.pl/player", - "old-cat.net", - "||olumpo.com", - ".olympicwatch.org", - "omgili.com", - "||omnitalk.com", - "||omnitalk.org", - "cling.omy.sg", - "forum.omy.sg", - "news.omy.sg", - "showbiz.omy.sg", - "||on.cc", - "||onedrive.live.com", - "||onion.city", - ".onlinecha.com", - "||onlineyoutube.com", - ".onlytweets.com", - "|http://onlytweets.com", - "onmoon.net", - "onmoon.com", - ".onthehunt.com", - "|http://onthehunt.com", - ".oopsforum.com", - "open.com.hk", - "openallweb.com", - "opendemocracy.net", - "||opendemocracy.net", - ".openervpn.in", - "openid.net", - "||openid.net", - ".openleaks.org", - "||openleaks.org", - "openvpn.net", - "||openvpn.net", - "||openwebster.com", - ".openwrt.org.cn", - "@@||openwrt.org.cn", - "my.opera.com/dahema", - "||demo.opera-mini.net", - ".opus-gaming.com", - "|http://opus-gaming.com", - "www.orchidbbs.com", - ".organcare.org.tw", - "organharvestinvestigation.net", - ".orgasm.com", - ".orgfree.com", - "||orient-doll.com", - "orientaldaily.com.my", - "||orientaldaily.com.my", - "||orn.jp", - "t.orzdream.com", - "||t.orzdream.com", - "tui.orzdream.com", - "||orzistic.org", - "||osfoora.com", - ".otnd.org", - "||otnd.org", - "||otto.de", - "||ourdearamy.com", - "oursogo.com", - ".oursteps.com.au", - "||oursteps.com.au", - ".oursweb.net", - "||ourtv.hk", - "xinqimeng.over-blog.com", - "||overplay.net", - "share.ovi.com/media", - "|http://owl.li", - "|http://ht.ly", - "|http://htl.li", - "|http://mash.to", - "www.owind.com", - "|http://www.oxid.it", - "oyax.com", - "oyghan.com/wps", - ".ozchinese.com/bbs", - "||ow.ly", - "bbs.ozchinese.com", - ".ozvoice.org", - "||ozvoice.org", - ".ozxw.com", - ".ozyoyo.com", - "||pachosting.com", - ".pacificpoker.com", - ".packetix.net", - "||pacopacomama.com", - ".padmanet.com", - "page2rss.com", - "||pagodabox.com", - ".palacemoon.com", - "forum.palmislife.com", - "||eriversoft.com", - ".paldengyal.com", - "paljorpublications.com", - ".paltalk.com", - "||pandapow.co", - ".pandapow.net", - ".pandavpn-jp.com", - ".panluan.net", - "||panluan.net", - "||pao-pao.net", - "paper.li", - "paperb.us", - ".paradisehill.cc", - ".paradisepoker.com", - ".partycasino.com", - ".partypoker.com", - ".passion.com", - "||passion.com", - ".passiontimes.hk", - "pastebin.com", - ".pastie.org", - "||pastie.org", - "||blog.pathtosharepoint.com", - "pbs.org/wgbh/pages/frontline/gate", - "pbs.org/wgbh/pages/frontline/tankman", - "pbs.org/wgbh/pages/frontline/tibet", - "video.pbs.org", - "pbwiki.com", - "||pbworks.com", - "||developers.box.net", - "||wiki.oauth.net", - "||wiki.phonegap.com", - "||wiki.jqueryui.com", - "||pbxes.com", - "||pbxes.org", - "pcdvd.com.tw", - ".pchome.com.tw", - "|http://pcij.org", - ".pcstore.com.tw", - "||pct.org.tw", - "pdetails.com", - "||pdproxy.com", - "||peace.ca", - "peacefire.org", - "peacehall.com", - "||peacehall.com", - "|http://pearlher.org", - ".peeasian.com", - ".pekingduck.org", - "||pekingduck.org", - ".pemulihan.or.id", - "|http://pemulihan.or.id", - "||pen.io", - "penchinese.com", - "||penchinese.net", - ".penchinese.net", - "pengyulong.com", - "penisbot.com", - "||blog.pentalogic.net", - ".penthouse.com", - ".pentoy.hk/%E4%B8%AD%E5%9C%8B", - ".pentoy.hk/%E6%99%82%E4%BA%8B", - ".peoplebookcafe.com", - ".peoplenews.tw", - "||peoplenews.tw", - ".peopo.org", - "||peopo.org", - ".percy.in", - ".perfectgirls.net", - "perfectvpn.net", - ".persecutionblog.com", - ".persiankitty.com", - "pfd.org.hk", - "phapluan.org", - "phayul.com", - "philborges.com", - "philly.com", - "||phncdn.com", - "||photodharma.net", - "||photofocus.com", - "||phuquocservices.com", - "||picacomiccn.com", - ".picidae.net", - "||img*.picturedip.com", - "picturesocial.com", - "||pin-cong.com", - ".pin6.com", - "||pin6.com", - ".ping.fm", - "||ping.fm", - "||pinimg.com", - ".pinkrod.com", - "||pinoy-n.com", - "||pinterest.at", - "||pinterest.ca", - "||pinterest.co.kr", - "||pinterest.co.uk", - ".pinterest.com", - "||pinterest.com", - "||pinterest.de", - "||pinterest.dk", - "||pinterest.fr", - "||pinterest.jp", - "||pinterest.nl", - "||pinterest.se", - ".pipii.tv", - ".piposay.com", - "piraattilahti.org", - ".piring.com", - "||pixelqi.com", - "||css.pixnet.in", - "||pixnet.net", - ".pixnet.net", - ".pk.com", - "||placemix.com", - "|http://pictures.playboy.com", - "||playboy.com", - ".playboyplus.com", - "||playboyplus.com", - "||player.fm", - ".playno1.com", - "||playno1.com", - "||playpcesor.com", - "plays.com.tw", - "||m.plixi.com", - "plm.org.hk", - "plunder.com", - ".plurk.com", - "||plurk.com", - ".plus28.com", - ".plusbb.com", - ".pmatehunter.com", - "|http://pmatehunter.com", - ".pmates.com", - "||po2b.com", - "pobieramy.top", - "||podictionary.com", - ".pokerstars.com", - "||pokerstars.com", - ".pokerstars.net", - "zh.pokerstrategy.com", - "politicalchina.org", - "politicalconsultation.org", - ".politiscales.net", - "||poloniex.com", - ".polymerhk.com", - "|http://polymerhk.com", - ".popo.tw", - "||popvote.hk", - ".popyard.com", - "||popyard.org", - ".porn.com", - ".porn2.com", - ".porn5.com", - ".pornbase.org", - ".pornerbros.com", - "||pornhd.com", - ".pornhost.com", - ".pornhub.com", - "||pornhub.com", - ".pornhubdeutsch.net", - "|http://pornhubdeutsch.net", - "||pornmm.net", - ".pornoxo.com", - ".pornrapidshare.com", - "||pornrapidshare.com", - ".pornsharing.com", - "|http://pornsharing.com", - ".pornsocket.com", - ".pornstarclub.com", - "||pornstarclub.com", - ".porntube.com", - ".porntubenews.com", - ".porntvblog.com", - "||porntvblog.com", - ".pornvisit.com", - ".portablevpn.nl", - "||poskotanews.com", - ".post01.com", - ".post76.com", - "||post76.com", - ".post852.com", - "postadult.com", - ".postimg.org", - "||potvpn.com", - "||powercx.com", - ".powerphoto.org", - "||www.powerpointninja.com", - "||presidentlee.tw", - "||cdn.printfriendly.com", - ".pritunl.com", - "provpnaccounts.com", - "||provpnaccounts.com", - ".proxfree.com", - "||proxfree.com", - "proxyanonimo.es", - ".proxynetwork.org.uk", - "||proxynetwork.org.uk", - "||pts.org.tw", - ".pttvan.org", - "pubu.com.tw", - "puffinbrowser.com", - "pureinsight.org", - ".pushchinawall.com", - ".putty.org", - "||putty.org", - "||calebelston.com", - "||blog.fizzik.com", - "||nf.id.au", - "||sogrady.me", - "||vatn.org", - "||ventureswell.com", - "||whereiswerner.com", - ".power.com", - "||power.com", - "powerapple.com", - "||powerapple.com", - "||abc.pp.ru", - "heix.pp.ru", - "||prayforchina.net", - "||premeforwindows7.com", - "||presentationzen.com", - "||prestige-av.com", - "prisoner-state-secret-journal-premier", - ".prisoneralert.com", - "||pritunl.com", - "||privacybox.de", - ".private.com/home", - "||privateinternetaccess.com", - "privatepaste.com", - "||privatepaste.com", - "privatetunnel.com", - "||privatetunnel.com", - "||privatevpn.com", - "||procopytips.com", - "provideocoalition.com", - "||prosiben.de", - "proxifier.com", - "api.proxlet.com", - "||proxomitron.info", - ".proxpn.com", - "||proxpn.com", - ".proxylist.org.uk", - "||proxylist.org.uk", - ".proxypy.net", - "||proxypy.net", - "proxyroad.com", - ".proxytunnel.net", - "||proyectoclubes.com", - "prozz.net", - "psblog.name", - "||psblog.name", - "||psiphon.ca", - ".psiphon3.com", - "||psiphon3.com", - ".psiphontoday.com", - ".ptt.cc", - "||ptt.cc", - ".puffstore.com", - ".puuko.com", - "||pullfolio.com", - ".punyu.com/puny", - "||pureconcepts.net", - "||pureinsight.org", - "||purepdf.com", - "||purevpn.com", - ".purplelotus.org", - ".pursuestar.com", - "||pursuestar.com", - ".pussyspace.com", - ".putihome.org", - ".putlocker.com/file", - "pwned.com", - "python.com", - ".python.com.tw", - "|http://python.com.tw", - "pythonhackers.com/p", - "ss.pythonic.life/", - ".qanote.com", - "||qanote.com", - ".qgirl.com.tw", - "||qiandao.today", - ".qi-gong.me", - "||qi-gong.me", - "||qiangyou.org", - ".qidian.ca", - ".qienkuen.org", - "||qienkuen.org", - "||qiwen.lu", - "qixianglu.cn", - "bbs.qmzdd.com", - ".qkshare.com", - "qoos.com", - "||qoos.com", - "blog.qooza.hk/dafengqixi", - "||efksoft.com", - "||qstatus.com", - "||qtweeter.com", - "||qtrac.eu", - ".quannengshen.org", - "|http://quannengshen.org", - "quantumbooter.net", - "||quitccp.net", - ".quitccp.net", - "||quitccp.org", - ".quitccp.org", - ".quora.com/Chinas-Future", - ".quran.com", - "|http://quran.com", - ".quranexplorer.com", - "qusi8.net", - ".qvodzy.org", - "nemesis2.qx.net/pages/MyEnTunnel", - "qxbbs.org", - ".ra.gg", - "|http://ra.gg/", - ".radicalparty.org", - "||rael.org", - "radicalparty.org", - "radioaustralia.net.au", - ".radiohilight.net", - "||radiohilight.net", - "opml.radiotime.com", - "||radiovaticana.org", - "||radiovncr.com", - "||raggedbanner.com", - "||raidcall.com.tw", - ".raidtalk.com.tw", - ".rainbowplan.org/bbs", - "|https://raindrop.io/", - ".raizoji.or.jp", - "|http://raizoji.or.jp", - "rangwang.biz", - "rangzen.com", - "rangzen.net", - "rangzen.org", - "|http://blog.ranxiang.com/", - "ranyunfei.com", - "||ranyunfei.com", - ".rapbull.net", - "|http://rapidgator.net/", - "||rapidmoviez.com", - "rapidvpn.com", - "||rapidvpn.com", - "||rarbgprx.org", - ".raremovie.cc", - "|http://raremovie.cc", - ".raremovie.net", - "|http://raremovie.net", - "||rawgit.com", - "||rawgithub.com", - "||razyboard.com", - "rcinet.ca", - ".read100.com", - ".readingtimes.com.tw", - "||readingtimes.com.tw", - "||readmoo.com", - ".readydown.com", - "|http://readydown.com", - ".realcourage.org", - ".realitykings.com", - "||realitykings.com", - ".realraptalk.com", - ".realsexpass.com", - ".recordhistory.org", - ".recovery.org.tw", - "|http://online.recoveryversion.org", - "||recoveryversion.com.tw", - "||red-lang.org", - "redballoonsolidarity.org", - ".redchinacn.net", - "|http://redchinacn.net", - "redchinacn.org", - "redtube.com", - "referer.us", - "||referer.us", - "||reflectivecode.com", - "relaxbbs.com", - ".relay.com.tw", - ".releaseinternational.org", - "religioustolerance.org", - "renminbao.com", - "||renminbao.com", - ".renyurenquan.org", - "||renyurenquan.org", - "|http://certificate.revocationcheck.com", - "subacme.rerouted.org", - "||resilio.com", - ".reuters.com", - "||reuters.com", - "||reutersmedia.net", - ".revleft.com", - "retweetist.com", - "||retweetrank.com", - "revver.com", - ".rfa.org", - "||rfa.org", - ".rfachina.com", - ".rfamobile.org", - "rfaweb.org", - "||rferl.org", - ".rfi.fr", - "||rfi.fr", - "|http://rfi.my/", - "|http://vds.rightster.com/", - ".rigpa.org", - ".rileyguide.com", - "riku.me/", - ".ritouki.jp", - "||ritter.vg", - ".rlwlw.com", - "||rlwlw.com", - ".rmjdw.com", - ".rmjdw132.info", - ".roadshow.hk", - ".roboforex.com", - "||robustnessiskey.com", - "||rocket-inc.net", - "|http://www2.rocketbbs.com/11/bbs.cgi?id=5mus", - "|http://www2.rocketbbs.com/11/bbs.cgi?id=freemgl", - "||rojo.com", - "||ronjoneswriter.com", - "||rolia.net", - ".roodo.com", - ".rosechina.net", - ".rotten.com", - ".rsf.org", - "||rsf.org", - ".rsf-chinese.org", - "||rsf-chinese.org", - ".rsgamen.org", - "||phosphation13.rssing.com", - ".rssmeme.com", - "||rssmeme.com", - "||rtalabel.org", - ".rthk.hk", - "|http://rthk.hk", - ".rthk.org.hk", - "|http://rthk.org.hk", - ".rti.org.tw", - "||rti.org.tw", - ".rtycminnesota.org", - ".ruanyifeng.com/blog*some_ways_to_break_the_great_firewall", - "rukor.org", - ".runbtx.com", - ".rushbee.com", - ".ruten.com.tw", - "rutube.ru", - ".ruyiseek.com", - ".rxhj.net", - "|http://rxhj.net", - ".s1s1s1.com", - "||s-cute.com", - ".s-dragon.org", - "||s1heng.com", - "|http://www.s4miniarchive.com", - "||s8forum.com", - "cdn1.lp.saboom.com", - "||sacks.com", - "sacom.hk", - "||sacom.hk", - "||sadpanda.us", - ".safervpn.com", - "||safervpn.com", - ".saintyculture.com", - "|http://saintyculture.com", - ".saiq.me", - "||saiq.me", - "||sakuralive.com", - ".sakya.org", - ".salvation.org.hk", - "||salvation.org.hk", - ".samair.ru/proxy/type-01", - ".sambhota.org", - ".cn.sandscotaicentral.com", - "|http://cn.sandscotaicentral.com", - ".sanmin.com.tw", - "sapikachu.net", - "savemedia.com", - "||savethesounds.info", - ".savetibet.de", - "||savetibet.de", - "savetibet.fr", - "savetibet.nl", - ".savetibet.org", - "||savetibet.org", - "savetibet.ru", - ".savetibetstore.org", - "||savetibetstore.org", - "savevid.com", - "||say2.info", - ".sbme.me", - "|http://sbme.me", - ".sbs.com.au/yourlanguage", - ".scasino.com", - "|http://www.sciencemag.org/content/344/6187/953", - ".sciencenets.com", - ".scmp.com", - "||scmp.com", - ".scmpchinese.com", - "||scramble.io", - ".scribd.com", - "||scribd.com", - "||scriptspot.com", - "seapuff.com", - "domainhelp.search.com", - ".searchtruth.com", - "secretchina.com", - "||secretchina.com", - "||secretgarden.no", - ".secretsline.biz", - "||secretsline.biz", - "||securetunnel.com", - "securityinabox.org", - "|https://securityinabox.org", - ".securitykiss.com", - "||securitykiss.com", - "||seed4.me", - "news.seehua.com", - "seesmic.com", - "||seevpn.com", - "||seezone.net", - "sejie.com", - ".sendspace.com", - "|http://tweets.seraph.me/", - "sesawe.net", - "||sesawe.net", - ".sesawe.org", - "||sethwklein.net", - ".setn.com", - ".settv.com.tw", - "forum.setty.com.tw", - ".sevenload.com", - "||sevenload.com", - ".sex.com", - ".sex-11.com", - "||sex3.com", - "||sex8.cc", - ".sexandsubmission.com", - ".sexbot.com", - ".sexhu.com", - ".sexhuang.com", - "sexinsex.net", - "||sexinsex.net", - ".sextvx.com", - "67.220.91.15", - "67.220.91.18", - "67.220.91.23", - "|http://*.sf.net", - ".sfileydy.com", - "||sfshibao.com", - ".sftindia.org", - ".sftuk.org", - "||sftuk.org", - "||shadeyouvpn.com", - "shadow.ma", - ".shadowsky.xyz", - ".shadowsocks.asia", - "||www.shadowsocks.com", - ".shadowsocks.com", - "||shadowsocks.com.hk", - ".shadowsocks.org", - "||shadowsocks.org", - "||shadowsocks-r.com", - "|http://cn.shafaqna.com", - ".shambalapost.com", - ".shambhalasun.com", - ".shangfang.org", - "||shangfang.org", - "shapeservices.com", - ".sharebee.com", - "||sharecool.org", - "sharpdaily.com.hk", - "||sharpdaily.com.hk", - ".sharpdaily.hk", - ".sharpdaily.tw", - ".shat-tibet.com", - "sheikyermami.com", - ".shellfire.de", - "||shellfire.de", - ".shenshou.org", - "shenyun.com", - "shenyunperformingarts.org", - "||shenyunperformingarts.org", - "shenzhoufilm.com", - "||shenzhoufilm.com", - "||sherabgyaltsen.com", - ".shiatv.net", - ".shicheng.org", - "shinychan.com", - "shipcamouflage.com", - ".shireyishunjian.com", - ".shitaotv.org", - "||shixiao.org", - "||shizhao.org", - "shizhao.org", - "shkspr.mobi/dabr", - "||shodanhq.com", - "||shooshtime.com", - ".shop2000.com.tw", - ".shopping.com", - ".showhaotu.com", - ".showtime.jp", - ".shutterstock.com", - "||shutterstock.com", - "ch.shvoong.com", - ".shwchurch.org", - "||www.shwchurch.org", - ".shwchurch3.com", - "|http://shwchurch3.com", - ".siddharthasintent.org", - "||sidelinesnews.com", - ".sidelinessportseatery.com", - ".sijihuisuo.club", - ".sijihuisuo.com", - ".silkbook.com", - "||simbolostwitter.com", - "simplecd.org", - "||simplecd.org", - "@@||simplecd.me", - "simpleproductivityblog.com", - "bbs.sina.com/", - "bbs.sina.com%2F", - "blog.sina.com.tw", - "dailynews.sina.com/", - "dailynews.sina.com%2F", - "forum.sina.com.hk", - "home.sina.com", - "||magazines.sina.com.tw", - "news.sina.com.hk", - "news.sina.com.tw", - "news.sinchew.com.my", - ".sinchew.com.my/node/", - ".sinchew.com.my/taxonomy/term", - ".singaporepools.com.sg", - "||singaporepools.com.sg", - ".singfortibet.com", - ".singpao.com.hk", - "singtao.com", - "||singtao.com", - "news.singtao.ca", - ".singtaousa.com", - "||singtaousa.com", - "sino-monthly.com", - "||sinocast.com", - "sinocism.com", - "sinomontreal.ca", - ".sinonet.ca", - ".sinopitt.info", - ".sinoants.com", - "||sinoants.com", - ".sinoquebec.com", - ".sierrafriendsoftibet.org", - "sis.xxx", - "||sis001.com", - "sis001.us", - ".site2unblock.com", - "||site90.net", - ".sitebro.tw", - "||sitekreator.com", - "||siteks.uk.to", - "||sitemaps.org", - ".sjrt.org", - "|http://sjrt.org", - "||sjum.cn", - "||sketchappsources.com", - "||skimtube.com", - "||skybet.com", - "|http://users.skynet.be/reves/tibethome.html", - ".skyking.com.tw", - "bbs.skykiwi.com", - "|http://www.skype.com/intl/", - "|http://www.skype.com/zh-Hant", - "||skyvegas.com", - ".xskywalker.com", - "||xskywalker.com", - "||skyxvpn.com", - "m.slandr.net", - ".slaytizle.com", - ".sleazydream.com", - "||slheng.com", - "||slideshare.net", - "forum.slime.com.tw", - ".slinkset.com", - "||slickvpn.com", - ".slutload.com", - "||smartdnsproxy.com", - ".smarthide.com", - "||app.smartmailcloud.com", - "smchbooks.com", - ".smh.com.au/world/death-of-chinese-playboy-leaves-fresh-scratches-in-party-paintwork-20120903-25a8v", - "smhric.org", - ".smith.edu/dalailama", - ".smyxy.org", - "||snapchat.com", - ".snaptu.com", - "||snaptu.com", - "||sndcdn.com", - "sneakme.net", - "snowlionpub.com", - "home.so-net.net.tw/yisa_tsai", - "||soc.mil", - ".socks-proxy.net", - "||socks-proxy.net", - ".sockscap64.com", - "||sockslist.net", - ".socrec.org", - "|http://socrec.org", - ".sod.co.jp", - ".softether.org", - "||softether.org", - ".softether-download.com", - "||softether-download.com", - "||cdn.softlayer.net", - "||sogclub.com", - "sohcradio.com", - "||sohcradio.com", - ".sokmil.com", - "||sorting-algorithms.com", - ".sostibet.org", - ".soumo.info", - "||soup.io", - "@@||static.soup.io", - ".sobees.com", - "||sobees.com", - "socialwhale.com", - ".softether.co.jp", - "||softwarebychuck.com", - "blog.sogoo.org", - "soh.tw", - "||soh.tw", - "sohfrance.org", - "||sohfrance.org", - "chinese.soifind.com", - "sokamonline.com", - ".solidaritetibet.org", - ".solidfiles.com", - "||somee.com", - ".songjianjun.com", - "||songjianjun.com", - ".sonicbbs.cc", - ".sonidodelaesperanza.org", - ".sopcast.com", - ".sopcast.org", - ".sorazone.net", - "||sos.org", - "bbs.sou-tong.org", - ".soubory.com", - "|http://soubory.com", - ".soul-plus.net", - ".soulcaliburhentai.net", - "||soulcaliburhentai.net", - "||soundcloud.com", - ".soundofhope.kr", - "soundofhope.org", - "||soundofhope.org", - "||soupofmedia.com", - "|http://sourceforge.net/p*/shadowsocksgui/", - ".sourcewadio.com", - "southnews.com.tw", - "sowers.org.hk", - "||wlx.sowiki.net", - "||spankbang.com", - ".spankingtube.com", - ".spankwire.com", - "||spb.com", - "||speakerdeck.com", - "||speedify.com", - "spem.at", - "||spencertipping.com", - "||spendee.com", - "||spicevpn.com", - ".spideroak.com", - "||spideroak.com", - ".spike.com", - ".spotflux.com", - "||spotflux.com", - ".spring4u.info", - "|http://spring4u.info", - "||sproutcore.com", - "||sproxy.info", - "||srocket.us", - ".ss-link.com", - "||ss-link.com", - ".ssglobal.co/wp", - "|http://ssglobal.co", - ".ssglobal.me", - "||ssh91.com", - ".sspro.ml", - "|http://sspro.ml", - ".ssrshare.com", - "||ssrshare.com", - "||sss.camp", - "||sstmlt.moe", - "sstmlt.net", - "||sstmlt.net", - "|http://stackoverflow.com/users/895245", - ".stage64.hk", - "||stage64.hk", - "||standupfortibet.org", - "stanford.edu/group/falun", - "usinfo.state.gov", - "||statueofdemocracy.org", - ".starfishfx.com", - ".starp2p.com", - "||starp2p.com", - ".startpage.com", - "||startpage.com", - ".startuplivingchina.com", - "|http://startuplivingchina.com", - "||static-economist.com", - "||stc.com.sa", - "||steel-storm.com", - ".steganos.com", - "||steganos.com", - ".steganos.net", - ".stepchina.com", - "ny.stgloballink.com", - "hd.stheadline.com/news/realtime", - "sthoo.com", - "||sthoo.com", - ".stickam.com", - "stickeraction.com/sesawe", - ".stileproject.com", - ".sto.cc", - ".stoporganharvesting.org", - "||storagenewsletter.com", - ".storm.mg", - "||storm.mg", - ".stoptibetcrisis.net", - "||stoptibetcrisis.net", - "||storify.com", - ".stormmediagroup.com", - "||stoweboyd.com", - "stranabg.com", - "||straplessdildo.com", - "||streamingthe.net", - "streema.com/tv/NTDTV_Chinese", - "cn.streetvoice.com/article", - "cn.streetvoice.com/diary", - "cn2.streetvoice.com", - "tw.streetvoice.com", - ".strikingly.com", - "||strongvpn.com", - ".strongwindpress.com", - ".student.tw/db", - "||studentsforafreetibet.org", - "||stumbleupon.com", - "stupidvideos.com", - ".successfn.com", - "panamapapers.sueddeutsche.de", - ".sugarsync.com", - "||sugarsync.com", - ".sugobbs.com", - "||sugumiru18.com", - "||suissl.com", - "summify.com", - ".sumrando.com", - "||sumrando.com", - "sun1911.com", - ".sunporno.com", - "||sunmedia.ca", - "||sunporno.com", - ".sunskyforum.com", - ".sunta.com.tw", - ".sunvpn.net", - ".suoluo.org", - ".superfreevpn.com", - ".supervpn.net", - "||supervpn.net", - ".superzooi.com", - "|http://superzooi.com", - ".suppig.net", - ".suprememastertv.com", - "|http://suprememastertv.com", - ".surfeasy.com", - "||surfeasy.com", - ".surfeasy.com.au", - "|http://surfeasy.com.au", - "||surrenderat20.net", - ".suyangg.com", - "|http://suyangg.com", - ".svsfx.com", - ".swissinfo.ch", - "||swissinfo.ch", - ".swissvpn.net", - "||swissvpn.net", - "switchvpn.net", - "||switchvpn.net", - ".sydneytoday.com", - "||sydneytoday.com", - ".sylfoundation.org", - "||syncback.com", - "sysresccd.org", - ".sytes.net", - "blog.syx86.com/2009/09/puff", - "blog.syx86.cn/2009/09/puff", - ".szbbs.net", - ".szetowah.org.hk", - "||t-g.com", - ".t35.com", - ".t66y.com", - "||t66y.com", - ".taa-usa.org", - "|http://taa-usa.org", - ".taaze.tw", - "||taaze.tw", - "|http://www.tablesgenerator.com/", - "tabtter.jp", - ".tacem.org", - ".taconet.com.tw", - "||taedp.org.tw", - ".tafm.org", - ".tagwa.org.au", - "tagwalk.com", - "||tagwalk.com", - "tahr.org.tw", - ".taipeisociety.org", - "||taipeisociety.org", - ".taiwanbible.com", - ".taiwancon.com", - ".taiwandaily.net", - "||taiwandaily.net", - ".taiwandc.org", - ".taiwanjustice.com", - "taiwankiss.com", - "taiwannation.com", - "taiwannation.com.tw", - "||taiwanncf.org.tw", - "||taiwannews.com.tw", - "|http://www.taiwanonline.cc/", - "taiwantp.net", - "||taiwantt.org.tw", - "taiwanus.net", - "taiwanyes.com", - "taiwan-sex.com", - ".talk853.com", - ".talkboxapp.com", - "||talkboxapp.com", - ".talkcc.com", - "||talkcc.com", - ".talkonly.net", - "||talkonly.net", - "||tamiaode.tk", - "||tanc.org", - "tangben.com", - ".tangren.us", - ".taoism.net", - "|http://taoism.net", - ".taolun.info", - "||taolun.info", - ".tapatalk.com", - "||tapatalk.com", - "blog.taragana.com", - ".tascn.com.au", - "||taup.net", - "|http://www.taup.org.tw", - ".taweet.com", - "||taweet.com", - ".tbcollege.org", - "||tbcollege.org", - ".tbi.org.hk", - ".tbicn.org", - ".tbjyt.org", - "||tbpic.info", - ".tbrc.org", - "tbs-rainbow.org", - ".tbsec.org", - "||tbsec.org", - "tbskkinabalu.page.tl", - ".tbsmalaysia.org", - ".tbsn.org", - "||tbsn.org", - ".tbsseattle.org", - ".tbssqh.org", - "|http://tbssqh.org", - "tbswd.org", - ".tbtemple.org.uk", - ".tbthouston.org", - ".tccwonline.org", - ".tcewf.org", - "tchrd.org", - "tcnynj.org", - "||tcpspeed.co", - ".tcpspeed.com", - "||tcpspeed.com", - ".tcsofbc.org", - ".tcsovi.org", - ".tdm.com.mo", - "teamamericany.com", - "||techviz.net", - "||teck.in", - ".teeniefuck.net", - "teensinasia.com", - ".telecomspace.com", - "||telegraph.co.uk", - ".tenacy.com", - "||tenzinpalmo.com", - ".tew.org", - ".thaicn.com", - "||theatrum-belli.com", - "theblemish.com", - "||thebcomplex.com", - ".thebobs.com", - "||thebobs.com", - ".thechinabeat.org", - "|http://www.thechinastory.org/yearbooks/yearbook-2012/", - ".thedalailamamovie.com", - "|http://thedalailamamovie.com", - "||thedw.us", - "thefrontier.hk/tf", - "cn.thegay.com", - "|http://thegioitinhoc.vn/", - ".thegly.com", - ".thehots.info", - "thehousenews.com", - "||thehun.net", - ".theinitium.com", - "||theinitium.com", - ".thenewslens.com", - "||thenewslens.com", - ".thepiratebay.org", - "||thepiratebay.org", - ".theporndude.com", - "||theporndude.com", - "||theportalwiki.com", - "thereallove.kr", - "therock.net.nz", - "thespeeder.com", - "||thestandnews.com", - "thetibetcenter.org", - "thetibetconnection.org", - ".thetibetmuseum.org", - ".thetibetpost.com", - "||thetibetpost.com", - "||thetinhat.com", - "thetrotskymovie.com", - "thevivekspot.com", - "||thewgo.org", - ".theync.com", - "|http://theync.com", - ".thinkingtaiwan.com", - ".thisav.com", - "|http://thisav.com", - ".thlib.org", - "||thomasbernhard.org", - ".thongdreams.com", - "threatchaos.com", - "||throughnightsfire.com", - ".thumbzilla.com", - "||thywords.com", - ".thywords.com.tw", - "tiananmenmother.org", - ".tiananmenduizhi.com", - "||tiananmenduizhi.com", - "||tiananmenuniv.com", - "||tiananmenuniv.net", - "||tiandixing.org", - ".tianhuayuan.com", - ".tianlawoffice.com", - "||tianti.io", - "tiantibooks.org", - "||tiantibooks.org", - "tianyantong.org.cn", - ".tianzhu.org", - ".tibet.at", - "tibet.ca", - ".tibet.com", - "||tibet.com", - "tibet.fr", - ".tibet.net", - "||tibet.net", - "tibet.nu", - ".tibet.org", - "||tibet.org", - ".tibet.sk", - "tibet.org.tw", - ".tibet.to", - ".tibet-envoy.eu", - "||tibet-envoy.eu", - ".tibet-foundation.org", - ".tibet-house-trust.co.uk", - "tibet-info.net", - "tibet-initiative.de", - "||tibet-initiative.de", - ".tibet-munich.de", - ".tibet3rdpole.org", - "|http://tibet3rdpole.org", - "tibetaction.net", - "||tibetaction.net", - ".tibetaid.org", - "tibetalk.com", - ".tibetan.fr", - "tibetan-alliance.org", - ".tibetanarts.org", - ".tibetanbuddhistinstitute.org", - "|http://tibetanbuddhistinstitute.org", - "tibetancommunity.org", - ".tibetanjournal.com", - ".tibetanlanguage.org", - ".tibetanliberation.org", - "||tibetanliberation.org", - ".tibetcollection.com", - ".tibetanaidproject.org", - ".tibetancommunityuk.net", - "|http://tibetancommunityuk.net", - "tibetanculture.org", - "tibetanfeministcollective.org", - ".tibetanpaintings.com", - ".tibetanphotoproject.com", - ".tibetanpoliticalreview.org", - ".tibetanreview.net", - "|http://tibetansports.org", - ".tibetanwomen.org", - "|http://tibetanwomen.org", - ".tibetanyouth.org", - ".tibetanyouthcongress.org", - "||tibetanyouthcongress.org", - ".tibetcharity.dk", - "tibetcharity.in", - ".tibetchild.org", - ".tibetcity.com", - ".tibetcorps.org", - ".tibetexpress.net", - "|http://tibetexpress.net", - "tibetfocus.com", - "tibetfund.org", - ".tibetgermany.com", - "||tibetgermany.de", - ".tibethaus.com", - ".tibetheritagefund.org", - "tibethouse.jp", - "tibethouse.org", - "||tibethouse.us", - ".tibetinfonet.net", - ".tibetjustice.org", - ".tibetkomite.dk", - "|http://tibetmuseum.org", - "tibetnetwork.org", - "||tibetnetwork.org", - ".tibetoffice.ch", - "|http://tibetoffice.ch", - "tibetoffice.eu", - "tibetoffice.org", - "tibetonline.com", - "||tibetonline.com", - ".tibetoffice.com.au", - "|http://tibetoffice.com.au", - "||tibetonline.tv", - ".tibetonline.tv", - ".tibetoralhistory.org", - "|http://tibetoralhistory.org", - ".tibetpolicy.eu", - ".tibetrelieffund.co.uk", - "tibetsites.com", - ".tibetsociety.com", - "||tibetsociety.com", - ".tibetsun.com", - ".tibetsupportgroup.org", - "|http://tibetsupportgroup.org", - ".tibetswiss.ch", - ".tibettelegraph.com", - "tibettimes.net", - "||tibetwrites.org", - ".ticket.com.tw", - ".tigervpn.com", - "||tigervpn.com", - ".timdir.com", - "|http://timdir.com", - ".time.com", - "|http://time.com", - ".timsah.com", - "||blog.tiney.com", - "tintuc101.com", - ".tiny.cc", - "|http://tiny.cc", - "tinychat.com", - "||tinypaste.com", - ".tistory.com", - "||tkcs-collins.com", - ".tmagazine.com", - "||tmagazine.com", - ".tmdfish.com", - "|http://tmi.me", - ".tmpp.org", - "|http://tmpp.org", - ".tnaflix.com", - "||tnaflix.com", - ".tngrnow.com", - ".tngrnow.net", - ".tnp.org", - "|http://tnp.org", - ".to-porno.com", - "||to-porno.com", - "togetter.com", - ".tokyo-247.com", - ".tokyo-hot.com", - "||tokyo-porn-tube.com", - "||tokyocn.com", - "tw.tomonews.net", - ".tongil.or.kr", - ".tono-oka.jp", - "tonyyan.net", - ".toodoc.com", - "toonel.net", - "top81.ws", - ".topnews.in", - ".toppornsites.com", - "|http://toppornsites.com", - ".torguard.net", - "||torguard.net", - "||top.tv", - ".topshareware.com", - ".topsy.com", - "||topsy.com", - "||toptip.ca", - "tora.to", - ".torcn.com", - ".torproject.org", - "||torproject.org", - "torrentprivacy.com", - "||torrentprivacy.com", - "|http://torrentproject.se", - "||torrenty.org", - "||torrentz.eu", - "||torvpn.com", - "||totalvpn.com", - ".toutiaoabc.com", - "towngain.com", - "toypark.in", - "toytractorshow.com", - ".tparents.org", - ".tpi.org.tw", - "||tpi.org.tw", - "traffichaus.com", - "||transparency.org", - "||treemall.com.tw", - "trendsmap.com", - "||trendsmap.com", - ".trialofccp.org", - "||trialofccp.org", - ".trimondi.de/SDLE", - ".trouw.nl", - "|http://trouw.nl", - ".trt.net.tr", - "trtc.com.tw", - ".truebuddha-md.org", - "|http://truebuddha-md.org", - "trulyergonomic.com", - ".truth101.co.tv", - "|http://truth101.co.tv", - ".truthontour.org", - "|http://truthontour.org", - ".truveo.com", - ".tsctv.net", - ".tsemtulku.com", - "tsquare.tv", - ".tsu.org.tw", - "tsunagarumon.com", - ".tsctv.net", - "||tt1069.com", - ".tttan.com", - "||tttan.com", - "bb.ttv.com.tw/bb", - "tu8964.com", - ".tubaholic.com", - ".tube.com", - "tube8.com", - "||tube8.com", - ".tube911.com", - "||tube911.com", - ".tubecup.com", - ".tubegals.com", - ".tubeislam.com", - "|http://tubeislam.com", - ".tubestack.com", - "||tubewolf.com", - ".tuibeitu.net", - "tuidang.net", - ".tuidang.org", - "||tuidang.org", - ".tuidang.se", - "bbs.tuitui.info", - ".tumutanzi.com", - "|http://tumutanzi.com", - "||tumview.com", - ".tunein.com", - "|http://tunein.com", - "||tunnelbear.com", - ".tunnelr.com", - "||tunnelr.com", - ".tuo8.blue", - "||tuo8.blue", - ".tuo8.cc", - ".tuo8.club", - "||tuo8.club", - ".tuo8.fit", - ".tuo8.hk", - ".tuo8.in", - ".tuo8.ninja", - ".tuo8.org", - "||tuo8.fit", - "||tuo8.org", - ".tuo8.pw", - "|http://tuo8.pw", - "||tuo8.red", - ".tuo8.space", - "tuitwit.com", - ".turansam.org", - ".turbobit.net", - "|http://turbobit.net", - ".turbohide.com", - "||turbohide.com", - ".tushycash.com", - "|http://tushycash.com", - "||app.tutanota.com", - ".tuvpn.com", - "||tuvpn.com", - "|http://tuzaijidi.com", - "|http://*.tuzaijidi.com", - ".tw01.org", - "|http://tw01.org", - ".tumblr.com", - "||tumblr.com", - "||lecloud.net", - "|http://cosmic.monar.ch", - "||slutmoonbeam.com", - "|http://blog.soylent.com", - ".tv.com", - "|http://tv.com", - "tvants.com", - "forum.tvb.com", - "news.tvb.com/list/world", - "news.tvb.com/local", - "news.tvbs.com.tw", - ".tvboxnow.com", - "|http://tvboxnow.com/", - "tvider.com", - ".tvmost.com.hk", - ".tvplayvideos.com", - "||tvunetworks.com", - ".tw-blog.com", - "|https://tw-blog.com", - ".tw-npo.org", - ".twaitter.com", - "twapperkeeper.com", - "||twapperkeeper.com", - "||twaud.io", - ".twaud.io", - ".twavi.com", - ".twbbs.net.tw", - "twbbs.org", - "twbbs.tw", - "||twblogger.com", - "tweepmag.com", - ".tweepml.org", - "||tweepml.org", - ".tweetbackup.com", - "||tweetbackup.com", - "tweetboard.com", - "||tweetboard.com", - ".tweetboner.biz", - "||tweetboner.biz", - ".tweetcs.com", - "|http://tweetcs.com", - "|http://deck.ly", - "||mtw.tl", - "||tweetedtimes.com", - "||tweetmylast.fm", - "tweetphoto.com", - "||tweetphoto.com", - "||tweetrans.com", - "tweetree.com", - "||tweetree.com", - ".tweettunnel.com", - "||tweettunnel.com", - "||tweetwally.com", - "tweetymail.com", - "||twelve.today", - ".tweez.net", - "|http://tweez.net", - "||twftp.org", - "||twgreatdaily.com", - "twibase.com", - ".twibble.de", - "||twibble.de", - "twibbon.com", - "||twibs.com", - ".twicountry.org", - "|http://twicountry.org", - "twicsy.com", - ".twiends.com", - "|http://twiends.com", - ".twifan.com", - "|http://twifan.com", - "twiffo.com", - "||twiffo.com", - ".twilightsex.com", - "twilog.org", - "twimbow.com", - "||twindexx.com", - "twipple.jp", - "||twipple.jp", - "||twip.me", - "twishort.com", - "||twishort.com", - "twistar.cc", - "||twister.net.co", - "||twisterio.com", - "twisternow.com", - "twistory.net", - "twitbrowser.net", - "||twitcause.com", - "||twitgether.com", - "||twiggit.org", - "twitgoo.com", - "twitiq.com", - "||twitiq.com", - ".twitlonger.com", - "||twitlonger.com", - "|http://tl.gd/", - "twitmania.com", - "twitoaster.com", - "||twitoaster.com", - "||twitonmsn.com", - ".twit2d.com", - "||twit2d.com", - ".twitstat.com", - "||twitstat.com", - "||firstfivefollowers.com", - "||retweeteffect.com", - "||tweeplike.me", - "||tweepguide.com", - "||turbotwitter.com", - ".twitvid.com", - "||twitvid.com", - "|http://twt.tl", - "twittbot.net", - "||ads-twitter.com", - "||twttr.com", - "||twitter4j.org", - ".twittercounter.com", - "||twittercounter.com", - "twitterfeed.com", - ".twittergadget.com", - "||twittergadget.com", - ".twitterkr.com", - "||twitterkr.com", - "||twittermail.com", - "||twitterrific.com", - "twittertim.es", - "||twittertim.es", - "twitthat.com", - "||twitturk.com", - ".twitturly.com", - "||twitturly.com", - ".twitzap.com", - "twiyia.com", - "||twstar.net", - ".twtkr.com", - "|http://twtkr.com", - ".twnorth.org.tw", - "twskype.com", - "twtrland.com", - "twurl.nl", - ".twyac.org", - "||twyac.org", - ".txxx.com", - ".tycool.com", - "||tycool.com", - "||typepad.com", - "@@||www.typepad.com", - "@@||static.typepad.com", - "||blog.expofutures.com", - "||legaltech.law.com", - "||blogs.tampabay.com", - "||contests.twilio.com", - ".embr.in", - "||embr.in", - ".u9un.com", - "||u9un.com", - ".ubddns.org", - "|http://ubddns.org", - "||uberproxy.net", - ".uc-japan.org", - "||uc-japan.org", - ".srcf.ucam.org/salon/", - "|http://china.ucanews.com/", - "||ucdc1998.org", - "|http://hum*.uchicago.edu/faculty/ywang/history", - "||uderzo.it", - ".udn.com", - "||udn.com", - "||udn.com.tw", - "udnbkk.com/bbs", - "||uforadio.com.tw", - "ufreevpn.com", - ".ugo.com", - "||uhdwallpapers.org", - "||uhrp.org", - ".uighur.nl", - "||uighur.nl", - "uighurbiz.net", - ".ulike.net", - "ukcdp.co.uk", - "ukliferadio.co.uk", - "||ukliferadio.co.uk", - "ultravpn.fr", - "||ultravpn.fr", - "ultraxs.com", - "umich.edu/~falun", - "||unblock.cn.com", - ".unblocker.yt", - "unblock-us.com", - "||unblock-us.com", - ".unblockdmm.com", - "|http://unblockdmm.com", - "||unblocksit.es", - "uncyclomedia.org", - ".uncyclopedia.hk/wiki", - "|http://uncyclopedia.hk", - "|http://uncyclopedia.tw", - "underwoodammo.com", - "||underwoodammo.com", - "||unholyknight.com", - ".uni.cc", - "||cldr.unicode.org", - ".unification.net", - ".unification.org.tw", - "||unirule.cloud", - ".unitedsocialpress.com", - ".unix100.com", - "||unknownspace.org", - ".unodedos.com", - "unpo.org", - ".untraceable.us", - "|http://untraceable.us", - "||uocn.org", - "tor.updatestar.com", - ".upholdjustice.org", - ".upload4u.info", - "uploaded.net/file", - "|http://uploaded.net/file", - "|http://uploaded.to/file", - ".uploadstation.com/file", - ".upmedia.mg", - "||upmedia.mg", - ".upornia.com", - "|http://upornia.com", - "||uproxy.org", - "|http://tor.cn.uptodown.com/", - ".upwill.org", - "ur7s.com", - "||urbansurvival.com", - "myshare.url.com.tw/", - "||urlborg.com", - "||urlparser.com", - "us.to", - "||usacn.com", - ".usaip.eu", - "||usaip.eu", - "dalailama.usc.edu", - "iipdigital.usembassy.gov", - "||usfk.mil", - "||usma.edu", - "||usmc.mil", - ".usocctn.com", - "|http://tarr.uspto.gov/", - "||tsdr.uspto.gov", - ".ustream.tv", - "||ustream.tv", - ".usunitednews.com", - "|http://usunitednews.com", - "usus.cc", - ".utopianpal.com", - "||utopianpal.com", - ".uu-gg.com", - ".uvwxyz.xyz", - "||uvwxyz.xyz", - ".uwants.com", - ".uwants.net", - "uyghur.co.uk", - "|http://uyghur-j.org", - "||uyghuramerican.org", - ".uyghurcanadiansociety.org", - ".uyghurensemble.co.uk", - "||uyghurcongress.org", - ".uyghurpen.org", - ".uyghurpress.com", - "|https://uyghurpress.com", - ".uyghurstudies.org", - "|http://uyghurstudies.org", - "uygur.org", - "|http://uymaarip.com/", - ".v2ray.com", - "||v2ray.com", - ".van001.com", - ".van698.com", - ".vanemu.cn", - ".vanilla-jp.com", - ".vanpeople.com", - "vansky.com", - "||vaticannews.va", - "||vcf-online.org", - "||vcfbuilder.org", - ".vegasred.com", - ".velkaepocha.sk", - ".venbbs.com", - ".venchina.com", - ".venetianmacao.com", - "||venetianmacao.com", - "veoh.com", - "mysite.verizon.net", - "vermonttibet.org", - ".versavpn.com", - "||versavpn.com", - "||verybs.com", - ".vft.com.tw", - ".viber.com", - "||viber.com", - ".vica.info", - ".victimsofcommunism.org", - "|http://victimsofcommunism.org", - "||vid.me", - "||vidble.com", - "videobam.com", - "||videobam.com", - ".videodetective.com", - ".videomega.tv", - "||videomega.tv", - ".videomo.com", - "videopediaworld.com", - ".videopress.com", - ".vidinfo.org/video", - "vietdaikynguyen.com", - ".vijayatemple.org", - "vimeo.com", - "||vimeo.com", - "||vimperator.org", - "||vincnd.com", - "||vinniev.com", - "|http://www.lib.virginia.edu/area-studies/Tibet/tibet.html", - ".virtualrealporn.com", - "||virtualrealporn.com", - "visibletweets.com", - "|http://ny.visiontimes.com", - ".vital247.org", - "||viu.com", - ".vivahentai4u.net", - ".vivatube.com", - ".vivthomas.com", - "||vivthomas.com", - ".vjav.com", - "||vjav.com", - ".vjmedia.com.hk", - ".vllcs.org", - "|http://vllcs.org", - "||vmixcore.com", - "||vnet.link", - "cn.voa.mobi", - "tw.voa.mobi", - ".voachineseblog.com", - "||voachineseblog.com", - "voagd.com", - ".voacantonese.com", - "||voacantonese.com", - "voachinese.com", - "||voachinese.com", - ".voanews.com", - "||voanews.com", - "voatibetan.com", - "||voatibetan.com", - ".voatibetanenglish.com", - "||voatibetanenglish.com", - ".vocativ.com", - "vocn.tv", - ".vot.org", - "||vot.org", - ".vovo2000.com", - "|http://vovo2000.com", - ".voxer.com", - "||voxer.com", - ".voy.com", - "||vpn.ac", - ".vpn4all.com", - "||vpn4all.com", - ".vpnaccount.org", - "|http://vpnaccount.org", - ".vpnaccounts.com", - "||vpnaccounts.com", - ".vpncomparison.org", - ".vpncup.com", - "||vpncup.com", - "vpnbook.com", - ".vpncoupons.com", - "|http://vpncoupons.com", - ".vpndada.com", - "||vpndada.com", - ".vpnfan.com", - "vpnfire.com", - ".vpnfires.biz", - ".vpnforgame.net", - "||vpnforgame.net", - "||vpngate.jp", - ".vpngate.net", - "||vpngate.net", - ".vpngratis.net", - "vpnhq.com", - ".vpnmaster.com", - "||vpnmaster.com", - ".vpnmentor.com", - "||vpnmentor.com", - ".vpninja.net", - "||vpninja.net", - ".vpnintouch.com", - "||vpnintouch.net", - "vpnjack.com", - "||vpnjack.com", - ".vpnpick.com", - "||vpnpick.com", - "||vpnpop.com", - "||vpnpronet.com", - ".vpnreactor.com", - "||vpnreactor.com", - "||vpnreviewz.com", - ".vpnsecure.me", - "||vpnsecure.me", - ".vpnshazam.com", - "||vpnshazam.com", - ".vpnshieldapp.com", - "||vpnshieldapp.com", - ".vpnsp.com", - ".vpntraffic.com", - ".vpntunnel.com", - "||vpntunnel.com", - ".vpnuk.info", - "||vpnuk.info", - "||vpnunlimitedapp.com", - ".vpnvip.com", - "||vpnvip.com", - ".vpnworldwide.com", - ".vporn.com", - "||vporn.com", - ".vpser.net", - "@@||vpser.net", - "vraiesagesse.net", - ".vrmtr.com", - "||vtunnel.com", - "||vuku.cc", - "lists.w3.org/archives/public", - "||w3schools.com", - "||waffle1999.com", - ".wahas.com", - ".waigaobu.com", - "waikeung.org/php_wind", - ".wailaike.net", - ".waiwaier.com", - "|http://waiwaier.com", - "||wallmama.com", - "wallornot.org", - "||wallpapercasa.com", - ".wallproxy.com", - "@@||wallproxy.com.cn", - "||waltermartin.com", - "||waltermartin.org", - "||www.wan-press.org", - "||wanderinghorse.net", - "||wangafu.net", - "||wangjinbo.org", - ".wangjinbo.org", - "wanglixiong.com", - ".wango.org", - "||wango.org", - "wangruoshui.net", - "www.wangruowang.org", - "want-daily.com", - "wapedia.mobi/zhsimp", - "||waselpro.com", - ".watchinese.com", - ".wattpad.com", - "||wattpad.com", - ".makzhou.warehouse333.com", - "washeng.net", - ".watch8x.com", - "||watchmygf.net", - "||wav.tv", - ".wdf5.com", - ".wearehairy.com", - ".wearn.com", - "||wearn.com", - "|http://hkcoc.weather.com.hk", - "||hudatoriq.web.id", - "||web2project.net", - "webbang.net", - ".webevader.org", - ".webfreer.com", - "weblagu.com", - ".webjb.org", - ".webrush.net", - "webs-tv.net", - ".websitepulse.com/help/testtools.china-test", - "|http://www.websnapr.com", - ".webwarper.net", - "|http://webwarper.net", - "webworkerdaily.com", - ".weekmag.info", - "||wefightcensorship.org", - ".wefong.com", - "weiboleak.com", - ".weihuo.org", - "weijingsheng.org", - ".weiming.info", - "||weiming.info", - "weiquanwang.org", - "|http://weisuo.ws", - ".welovecock.com", - ".wemigrate.org", - "|http://wemigrate.org", - "wengewang.com", - "||wengewang.org", - ".wenhui.ch", - "|http://trans.wenweipo.com/gb/", - ".wenxuecity.com", - "||wenxuecity.com", - ".wenyunchao.com", - "||wenyunchao.com", - ".westca.com", - "||westca.com", - "||westernwolves.com", - ".westkit.net", - "||westpoint.edu", - ".westernshugdensociety.org", - "wetpussygames.com", - ".wetplace.com", - "wexiaobo.org", - "||wexiaobo.org", - "wezhiyong.org", - "||wezone.net", - ".wforum.com", - "||wforum.com/", - ".whatblocked.com", - "||whatblocked.com", - ".wheatseeds.org", - "||wheelockslatin.com", - ".whippedass.com", - ".whoer.net", - "||whoer.net", - "whotalking.com", - "whylover.com", - "||whyx.org", - "|http://zh.ecdm.wikia.com", - "|http://evchk.wikia.com", - "fq.wikia.com", - "zh.pttpedia.wikia.com/wiki/%E7%BF%92%E5%8C%85%E5%AD%90%E4%B9%8B%E4%BA%82", - "cn.uncyclopedia.wikia.com", - "zh.uncyclopedia.wikia.com", - "||wikileaks.ch", - "||wikileaks.com", - "||wikileaks.de", - "||wikileaks.eu", - "||wikileaks.lu", - ".wikileaks.org", - "||wikileaks.org", - "||wikileaks.pl", - ".wikileaks-forum.com", - "wildammo.com", - ".williamhill.com", - "||collateralmurder.com", - "||collateralmurder.org", - "wikilivres.info/wiki/%E9%9B%B6%E5%85%AB%E5%AE%AA%E7%AB%A0", - "||wikimapia.org", - "|http://zh.wikisource.org", - "||zh.wikinews.org", - "||ja.wikipedia.org", - "||wikipedia.org", - "||wikiwiki.jp", - "||casino.williamhill.com", - "||sports.williamhill.com", - "||vegas.williamhill.com", - "||willw.net", - "||windowsphoneme.com", - ".windscribe.com", - "||windscribe.com", - "||community.windy.com", - "||wingy.site", - ".winning11.com", - "winwhispers.info", - "||wiredbytes.com", - "||wiredpen.com", - ".wisdompubs.org", - ".wisevid.com", - "||wisevid.com", - ".witnessleeteaching.com", - ".witopia.net", - ".wjbk.org", - "||wjbk.org", - "|http://wn.com", - ".wnacg.com", - ".wnacg.org", - ".wo.tc", - "||woeser.com", - "|http://woesermiddle-way.net/", - ".wokar.org", - "|http://wokar.org", - "wolfax.com", - "||wolfax.com", - "||woolyss.com", - "woopie.jp", - "||woopie.jp", - "woopie.tv", - "||woopie.tv", - "||workatruna.com", - ".workerdemo.org.hk", - ".workerempowerment.org", - "||workersthebig.net", - ".worldcat.org", - "worldjournal.com", - ".worldvpn.net", - "||worldvpn.net", - "||videopress.com", - ".wordpress.com", - "|http://*.wordpress.com", - "||chenshan20042005.wordpress.com", - "||chinaview.wordpress.com", - "||cnbbnews.wordpress.com", - "||freedominfonetweb.wordpress.com", - "||hka8964.wordpress.com", - "||hkanews.wordpress.com", - "||hqsbnet.wordpress.com", - "||hqsbonline.wordpress.com", - "||investigating.wordpress.com", - "||jobnewera.wordpress.com", - "||minghuiyw.wordpress.com", - "||wo3ttt.wordpress.com", - "||sujiatun.wordpress.com", - "||xijie.wordpress.com", - "||wp.com", - ".wow.com", - ".wow-life.net", - "||wowlegacy.ml", - "||wowporn.com", - "||wowgirls.com", - ".wowrk.com", - "woxinghuiguo.com", - ".woyaolian.org", - "|http://woyaolian.org", - ".wpoforum.com", - "||wpoforum.com", - ".wqyd.org", - "||wqyd.org", - "wrchina.org", - "wretch.cc", - ".wsj.com", - "||wsj.com", - ".wsj.net", - "||wsj.net", - ".wsjhk.com", - ".wtbn.org", - ".wtfpeople.com", - "wuerkaixi.com", - "||wufafangwen.com", - "wufi.org.tw", - "||wuguoguang.com", - "wujie.net", - "wujieliulan.com", - "||wujieliulan.com", - "wukangrui.net", - "||wuw.red", - "||wuyanblog.com", - ".wwitv.com", - "||wwitv.com", - "wzyboy.im/post/160", - ".x-berry.com", - "||x-berry.com", - "||x-art.com", - "||x-wall.org", - "x1949x.com", - "x365x.com", - "xanga.com", - "||xbabe.com", - ".xbookcn.com", - "||xbookcn.com", - "||xcafe.in", - "||xcity.jp", - ".xcritic.com", - "|http://cdn*.xda-developers.com", - ".xerotica.com", - "destiny.xfiles.to/ubbthreads", - ".xfm.pp.ru", - ".xgmyd.com", - "||xgmyd.com", - "xhamster.com", - "||xhamster.com", - ".xianba.net", - ".xianchawang.net", - ".xianjian.tw", - "|http://xianjian.tw", - ".xianqiao.net", - ".xiaobaiwu.com", - ".xiaochuncnjp.com", - ".xiaod.in", - ".xiaohexie.com", - "||xiaolan.me", - "||xiaoma.org", - "||xiaohexie.com", - "xiezhua.com", - ".xihua.es", - "forum.xinbao.de/forum", - ".xing.com", - "|http://xing.com", - ".xinmiao.com.hk", - "||xinmiao.com.hk", - "xinsheng.net", - "xinshijue.com", - "xinhuanet.org", - "|http://xinyubbs.net", - ".xiongpian.com", - ".xiuren.org", - "xizang-zhiye.org", - "xjp.cc", - "||xjp.cc", - "||xjtravelguide.com", - "xlfmtalk.com", - "||xlfmwz.info", - "||xml-training-guide.com", - "xmovies.com", - "||xnxx.com", - "xpdo.net", - "||xpud.org", - ".xrentdvd.com", - ".xskywalker.net", - "||xtube.com", - "blog.xuite.net", - "vlog.xuite.net", - "xuzhiyong.net", - "||xuchao.org", - "xuchao.net", - "||xuchao.net", - "xvideo.cc", - ".xvideos.com", - "||xvideos.com", - "||xvideos.es", - ".xkiwi.tk/", - ".xxbbx.com", - ".xxlmovies.com", - "||xxx.com", - ".xxx.xxx", - "|http://xxx.xxx", - ".xxxfuckmom.com", - "||xxxx.com.au", - ".xxxymovies.com", - "|http://xxxymovies.com", - "xys.org", - "xysblogs.org", - "xyy69.com", - "xyy69.info", - "||yakbutterblues.com", - "||yam.com", - "||yam.org.tw", - ".yanghengjun.com", - "yangjianli.com", - ".yasni.co.uk", - "||yasni.co.uk", - ".yayabay.com/forum", - ".ydy.com", - ".yeahteentube.com", - "||yeahteentube.com", - "||yecl.net", - "||yeelou.com", - "yeeyi.com", - "yegle.net", - "||yegle.net", - ".yes.xxx", - "||yes123.com.tw", - "||yesasia.com", - "||yesasia.com.hk", - ".yes-news.com", - "|http://yes-news.com", - ".yespornplease.com", - "||yespornplease.com", - "|http://yeyeclub.com", - "||yhcw.net", - ".yibada.com", - ".yibaochina.com", - ".yidio.com", - "||yidio.com", - "yilubbs.com", - "xa.yimg.com", - ".yingsuoss.com", - ".yipub.com", - "||yipub.com", - "yinlei.org/mt", - ".yizhihongxing.com", - ".yobt.com", - ".yobt.tv", - "||yobt.tv", - ".yogichen.org", - "||yogichen.org", - ".yolasite.com", - ".yomiuri.co.jp", - "yong.hu", - ".yorkbbs.ca", - "||youxu.info", - ".youjizz.com", - "||youjizz.com", - ".youmaker.com", - "||youmaker.com", - ".youngpornvideos.com", - "youngspiration.hk", - ".youpai.org", - "||youpai.org", - ".your-freedom.net", - "||yourepeat.com", - ".yourprivatevpn.com", - "||yourprivatevpn.com", - ".yousendit.com", - "||yousendit.com", - ".youthnetradio.org/tmit/forum", - "blog.youthwant.com.tw", - "me.youthwant.com.tw", - "share.youthwant.com.tw", - "topic.youthwant.com.tw", - ".youporn.com", - "||youporn.com", - ".youporngay.com", - "||youporngay.com", - ".yourlisten.com", - "|http://yourlisten.com", - ".yourlust.com", - "|http://yourlust.com", - "youshun12.com", - ".youtubecn.com", - "youversion.com", - "||youversion.com", - "blog.youxu.info/2010/03/14/west-chamber", - "ytht.net", - "yuanming.net", - ".yuanzhengtang.org", - ".yulghun.com", - "||yunchao.net", - "||yuntipub.com", - ".yuvutu.com", - "||yvesgeleyn.com", - ".ywpw.com/forums/history/post/A0/p0/html/227", - "yx51.net", - ".yyii.org", - "||yyii.org", - ".yzzk.com", - "|http://yzzk.com", - "zacebook.com", - ".zalmos.com", - "||zalmos.com", - "||zannel.com", - ".zaobao.com", - "||zaobao.com", - "|http://zaobao.com.sg", - "||zaobao.com.sg", - ".zaozon.com", - "||zdnet.com.tw", - ".zello.com", - "||zello.com", - ".zengjinyan.org", - ".zenmate.com", - "||zenmate.com", - "||zenmate.com.ru", - "||zeronet.io", - "||zeutch.com", - ".zfreet.com", - ".zgsddh.com", - "zgzcjj.net", - ".zhanbin.net", - "||zhanbin.net", - ".zhangboli.net", - "||zhangtianliang.com", - "||zhanlve.org", - "zhenghui.org", - ".zhengjian.org", - "||zhengjian.org", - "zhengwunet.org", - "zhenlibu.info", - "||zhenlibu.info", - ".zhenlibu1984.com", - "||zhenlibu1984.com", - "|http://zhenxiang.biz", - ".zhinengluyou.com", - "zhongguo.ca", - "|http://zhongguorenquan.org", - "zhongguotese.net", - "||zhongguotese.net", - "||zhongmeng.org", - ".zhoushuguang.com", - "||zhreader.com", - ".zhuangbi.me", - "||zhuangbi.me", - ".zhuanxing.cn", - "||zhuatieba.com", - "zhuichaguoji.org", - "||zhuichaguoji.org", - "|http://book.zi5.me", - ".ziddu.com/download", - "||zillionk.com", - ".zinio.com", - "||zinio.com", - ".ziporn.com", - ".zippyshare.com", - ".zkaip.com", - "||zkaip.com", - "realforum.zkiz.com", - "||zmw.cn", - ".zodgame.us", - "zomobo.net", - ".zonaeuropa.com", - "||zonaeuropa.com", - "||zonghexinwen.com", - ".zonghexinwen.net", - "||zoogvpn.com", - "||zootool.com", - ".zoozle.net", - "writer.zoho.com", - "||zorrovpn.com", - "||zpn.im", - "||zspeeder.me", - ".zsrhao.com", - ".zuo.la", - "||zuo.la", - "||zuobiao.me", - ".zuola.com", - "||zuola.com", - "||zvereff.com", - ".zynaima.com", - "zyzc9.com", - ".zzcartoon.com", - "64memo", - "aHR0cHM6Ly95ZWNsLm5ldA", - "freenet", - ".google.*/falun", - "phobos.apple.com*/video", - "q=freedom", - "q%3Dfreedom", - "remembering_tiananmen_20_years", - "search*safeweb", - "q=triangle", - "q%3DTriangle", - "ultrareach", - "ultrasurf", - "@@||aliyun.com", - "@@||baidu.com", - "@@||chinaso.com", - "@@||chinaz.com", - "@@|http://nrch.culture.tw/", - "@@||adservice.google.com", - "@@||dl.google.com", - "@@||kh.google.com", - "@@||khm.google.com", - "@@||khm0.google.com", - "@@||khm1.google.com", - "@@||khm2.google.com", - "@@||khm3.google.com", - "@@||khmdb.google.com", - "@@||tools.google.com", - "@@||clientservices.googleapis.com", - "@@||fonts.googleapis.com", - "@@||khm.googleapis.com", - "@@||khm0.googleapis.com", - "@@||khm1.googleapis.com", - "@@||khm2.googleapis.com", - "@@||khm3.googleapis.com", - "@@||khmdb.googleapis.com", - "@@||storage.googleapis.com", - "@@||translate.googleapis.com", - "@@||update.googleapis.com", - "@@||safebrowsing.googleapis.com", - "@@||cn.gravatar.com", - "@@||connectivitycheck.gstatic.com", - "@@||csi.gstatic.com", - "@@||fonts.gstatic.com", - "@@||ssl.gstatic.com", - "@@||haosou.com", - "@@||ip.cn", - "@@||jike.com", - "@@|http://translate.google.cn", - "@@|http://www.google.cn/maps", - "@@||http2.golang.org", - "@@||gov.cn", - "@@||qq.com", - "@@||sina.cn", - "@@||sina.com.cn", - "@@||sogou.com", - "@@||so.com", - "@@||soso.com", - "@@||uluai.com.cn", - "@@||weibo.com", - "@@||yahoo.cn", - "@@||youdao.com", - "@@||zhongsou.com", - "@@|http://ime.baidu.jp" -]; - -/* -* This file is part of Adblock Plus , -* Copyright (C) 2006-2014 Eyeo GmbH -* -* Adblock Plus is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License version 3 as -* published by the Free Software Foundation. -* -* Adblock Plus is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with Adblock Plus. If not, see . -*/ - -function createDict() -{ - var result = {}; - result.__proto__ = null; - return result; -} - -function getOwnPropertyDescriptor(obj, key) -{ - if (obj.hasOwnProperty(key)) - { - return obj[key]; - } - return null; -} - -function extend(subclass, superclass, definition) -{ - if (Object.__proto__) - { - definition.__proto__ = superclass.prototype; - subclass.prototype = definition; - } - else - { - var tmpclass = function(){}, ret; - tmpclass.prototype = superclass.prototype; - subclass.prototype = new tmpclass(); - subclass.prototype.constructor = superclass; - for (var i in definition) - { - if (definition.hasOwnProperty(i)) - { - subclass.prototype[i] = definition[i]; - } - } - } -} - -function Filter(text) -{ - this.text = text; - this.subscriptions = []; -} -Filter.prototype = { - text: null, - subscriptions: null, - toString: function() - { - return this.text; - } -}; -Filter.knownFilters = createDict(); -Filter.elemhideRegExp = /^([^\/\*\|\@"!]*?)#(\@)?(?:([\w\-]+|\*)((?:\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\))*)|#([^{}]+))$/; -Filter.regexpRegExp = /^(@@)?\/.*\/(?:\$~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)?$/; -Filter.optionsRegExp = /\$(~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)$/; -Filter.fromText = function(text) -{ - if (text in Filter.knownFilters) - { - return Filter.knownFilters[text]; - } - var ret; - if (text.charAt(0) == "!") - { - ret = new CommentFilter(text); - } - else - { - ret = RegExpFilter.fromText(text); - } - Filter.knownFilters[ret.text] = ret; - return ret; -}; - -function InvalidFilter(text, reason) -{ - Filter.call(this, text); - this.reason = reason; -} -extend(InvalidFilter, Filter, { - reason: null -}); - -function CommentFilter(text) -{ - Filter.call(this, text); -} -extend(CommentFilter, Filter, { -}); - -function ActiveFilter(text, domains) -{ - Filter.call(this, text); - this.domainSource = domains; -} -extend(ActiveFilter, Filter, { - domainSource: null, - domainSeparator: null, - ignoreTrailingDot: true, - domainSourceIsUpperCase: false, - getDomains: function() - { - var prop = getOwnPropertyDescriptor(this, "domains"); - if (prop) - { - return prop; - } - var domains = null; - if (this.domainSource) - { - var source = this.domainSource; - if (!this.domainSourceIsUpperCase) - { - source = source.toUpperCase(); - } - var list = source.split(this.domainSeparator); - if (list.length == 1 && (list[0]).charAt(0) != "~") - { - domains = createDict(); - domains[""] = false; - if (this.ignoreTrailingDot) - { - list[0] = list[0].replace(/\.+$/, ""); - } - domains[list[0]] = true; - } - else - { - var hasIncludes = false; - for (var i = 0; i < list.length; i++) - { - var domain = list[i]; - if (this.ignoreTrailingDot) - { - domain = domain.replace(/\.+$/, ""); - } - if (domain == "") - { - continue; - } - var include; - if (domain.charAt(0) == "~") - { - include = false; - domain = domain.substr(1); - } - else - { - include = true; - hasIncludes = true; - } - if (!domains) - { - domains = createDict(); - } - domains[domain] = include; - } - domains[""] = !hasIncludes; - } - this.domainSource = null; - } - return this.domains; - }, - sitekeys: null, - isActiveOnDomain: function(docDomain, sitekey) - { - if (this.getSitekeys() && (!sitekey || this.getSitekeys().indexOf(sitekey.toUpperCase()) < 0)) - { - return false; - } - if (!this.getDomains()) - { - return true; - } - if (!docDomain) - { - return this.getDomains()[""]; - } - if (this.ignoreTrailingDot) - { - docDomain = docDomain.replace(/\.+$/, ""); - } - docDomain = docDomain.toUpperCase(); - while (true) - { - if (docDomain in this.getDomains()) - { - return this.domains[docDomain]; - } - var nextDot = docDomain.indexOf("."); - if (nextDot < 0) - { - break; - } - docDomain = docDomain.substr(nextDot + 1); - } - return this.domains[""]; - }, - isActiveOnlyOnDomain: function(docDomain) - { - if (!docDomain || !this.getDomains() || this.getDomains()[""]) - { - return false; - } - if (this.ignoreTrailingDot) - { - docDomain = docDomain.replace(/\.+$/, ""); - } - docDomain = docDomain.toUpperCase(); - for (var domain in this.getDomains()) - { - if (this.domains[domain] && domain != docDomain && (domain.length <= docDomain.length || domain.indexOf("." + docDomain) != domain.length - docDomain.length - 1)) - { - return false; - } - } - return true; - } -}); - -function RegExpFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys) -{ - ActiveFilter.call(this, text, domains, sitekeys); - if (contentType != null) - { - this.contentType = contentType; - } - if (matchCase) - { - this.matchCase = matchCase; - } - if (thirdParty != null) - { - this.thirdParty = thirdParty; - } - if (sitekeys != null) - { - this.sitekeySource = sitekeys; - } - if (regexpSource.length >= 2 && regexpSource.charAt(0) == "/" && regexpSource.charAt(regexpSource.length - 1) == "/") - { - var regexp = new RegExp(regexpSource.substr(1, regexpSource.length - 2), this.matchCase ? "" : "i"); - this.regexp = regexp; - } - else - { - this.regexpSource = regexpSource; - } -} -extend(RegExpFilter, ActiveFilter, { - domainSourceIsUpperCase: true, - length: 1, - domainSeparator: "|", - regexpSource: null, - getRegexp: function() - { - var prop = getOwnPropertyDescriptor(this, "regexp"); - if (prop) - { - return prop; - } - var source = this.regexpSource.replace(/\*+/g, "*").replace(/\^\|$/, "^").replace(/\W/g, "\\$&").replace(/\\\*/g, ".*").replace(/\\\^/g, "(?:[\\x00-\\x24\\x26-\\x2C\\x2F\\x3A-\\x40\\x5B-\\x5E\\x60\\x7B-\\x7F]|$)").replace(/^\\\|\\\|/, "^[\\w\\-]+:\\/+(?!\\/)(?:[^\\/]+\\.)?").replace(/^\\\|/, "^").replace(/\\\|$/, "$").replace(/^(\.\*)/, "").replace(/(\.\*)$/, ""); - var regexp = new RegExp(source, this.matchCase ? "" : "i"); - this.regexp = regexp; - return regexp; - }, - contentType: 2147483647, - matchCase: false, - thirdParty: null, - sitekeySource: null, - getSitekeys: function() - { - var prop = getOwnPropertyDescriptor(this, "sitekeys"); - if (prop) - { - return prop; - } - var sitekeys = null; - if (this.sitekeySource) - { - sitekeys = this.sitekeySource.split("|"); - this.sitekeySource = null; - } - this.sitekeys = sitekeys; - return this.sitekeys; - }, - matches: function(location, contentType, docDomain, thirdParty, sitekey) - { - if (this.getRegexp().test(location) && this.isActiveOnDomain(docDomain, sitekey)) - { - return true; - } - return false; - } -}); -RegExpFilter.prototype["0"] = "#this"; -RegExpFilter.fromText = function(text) -{ - var blocking = true; - var origText = text; - if (text.indexOf("@@") == 0) - { - blocking = false; - text = text.substr(2); - } - var contentType = null; - var matchCase = null; - var domains = null; - var sitekeys = null; - var thirdParty = null; - var collapse = null; - var options; - var match = text.indexOf("$") >= 0 ? Filter.optionsRegExp.exec(text) : null; - if (match) - { - options = match[1].toUpperCase().split(","); - text = match.input.substr(0, match.index); - for (var _loopIndex6 = 0; _loopIndex6 < options.length; ++_loopIndex6) - { - var option = options[_loopIndex6]; - var value = null; - var separatorIndex = option.indexOf("="); - if (separatorIndex >= 0) - { - value = option.substr(separatorIndex + 1); - option = option.substr(0, separatorIndex); - } - option = option.replace(/-/, "_"); - if (option in RegExpFilter.typeMap) - { - if (contentType == null) - { - contentType = 0; - } - contentType |= RegExpFilter.typeMap[option]; - } - else if (option.charAt(0) == "~" && option.substr(1) in RegExpFilter.typeMap) - { - if (contentType == null) - { - contentType = RegExpFilter.prototype.contentType; - } - contentType &= ~RegExpFilter.typeMap[option.substr(1)]; - } - else if (option == "MATCH_CASE") - { - matchCase = true; - } - else if (option == "~MATCH_CASE") - { - matchCase = false; - } - else if (option == "DOMAIN" && typeof value != "undefined") - { - domains = value; - } - else if (option == "THIRD_PARTY") - { - thirdParty = true; - } - else if (option == "~THIRD_PARTY") - { - thirdParty = false; - } - else if (option == "COLLAPSE") - { - collapse = true; - } - else if (option == "~COLLAPSE") - { - collapse = false; - } - else if (option == "SITEKEY" && typeof value != "undefined") - { - sitekeys = value; - } - else - { - return new InvalidFilter(origText, "Unknown option " + option.toLowerCase()); - } - } - } - if (!blocking && (contentType == null || contentType & RegExpFilter.typeMap.DOCUMENT) && (!options || options.indexOf("DOCUMENT") < 0) && !/^\|?[\w\-]+:/.test(text)) - { - if (contentType == null) - { - contentType = RegExpFilter.prototype.contentType; - } - contentType &= ~RegExpFilter.typeMap.DOCUMENT; - } - try - { - if (blocking) - { - return new BlockingFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys, collapse); - } - else - { - return new WhitelistFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys); - } - } - catch (e) - { - return new InvalidFilter(origText, e); - } -}; -RegExpFilter.typeMap = { - OTHER: 1, - SCRIPT: 2, - IMAGE: 4, - STYLESHEET: 8, - OBJECT: 16, - SUBDOCUMENT: 32, - DOCUMENT: 64, - XBL: 1, - PING: 1, - XMLHTTPREQUEST: 2048, - OBJECT_SUBREQUEST: 4096, - DTD: 1, - MEDIA: 16384, - FONT: 32768, - BACKGROUND: 4, - POPUP: 268435456, - ELEMHIDE: 1073741824 -}; -RegExpFilter.prototype.contentType &= ~ (RegExpFilter.typeMap.ELEMHIDE | RegExpFilter.typeMap.POPUP); - -function BlockingFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys, collapse) -{ - RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys); - this.collapse = collapse; -} -extend(BlockingFilter, RegExpFilter, { - collapse: null -}); - -function WhitelistFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys) -{ - RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys); -} -extend(WhitelistFilter, RegExpFilter, { -}); - -function Matcher() -{ - this.clear(); -} -Matcher.prototype = { - filterByKeyword: null, - keywordByFilter: null, - clear: function() - { - this.filterByKeyword = createDict(); - this.keywordByFilter = createDict(); - }, - add: function(filter) - { - if (filter.text in this.keywordByFilter) - { - return; - } - var keyword = this.findKeyword(filter); - var oldEntry = this.filterByKeyword[keyword]; - if (typeof oldEntry == "undefined") - { - this.filterByKeyword[keyword] = filter; - } - else if (oldEntry.length == 1) - { - this.filterByKeyword[keyword] = [oldEntry, filter]; - } - else - { - oldEntry.push(filter); - } - this.keywordByFilter[filter.text] = keyword; - }, - remove: function(filter) - { - if (!(filter.text in this.keywordByFilter)) - { - return; - } - var keyword = this.keywordByFilter[filter.text]; - var list = this.filterByKeyword[keyword]; - if (list.length <= 1) - { - delete this.filterByKeyword[keyword]; - } - else - { - var index = list.indexOf(filter); - if (index >= 0) - { - list.splice(index, 1); - if (list.length == 1) - { - this.filterByKeyword[keyword] = list[0]; - } - } - } - delete this.keywordByFilter[filter.text]; - }, - findKeyword: function(filter) - { - var result = ""; - var text = filter.text; - if (Filter.regexpRegExp.test(text)) - { - return result; - } - var match = Filter.optionsRegExp.exec(text); - if (match) - { - text = match.input.substr(0, match.index); - } - if (text.substr(0, 2) == "@@") - { - text = text.substr(2); - } - var candidates = text.toLowerCase().match(/[^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])/g); - if (!candidates) - { - return result; - } - var hash = this.filterByKeyword; - var resultCount = 16777215; - var resultLength = 0; - for (var i = 0, l = candidates.length; i < l; i++) - { - var candidate = candidates[i].substr(1); - var count = candidate in hash ? hash[candidate].length : 0; - if (count < resultCount || count == resultCount && candidate.length > resultLength) - { - result = candidate; - resultCount = count; - resultLength = candidate.length; - } - } - return result; - }, - hasFilter: function(filter) - { - return filter.text in this.keywordByFilter; - }, - getKeywordForFilter: function(filter) - { - if (filter.text in this.keywordByFilter) - { - return this.keywordByFilter[filter.text]; - } - else - { - return null; - } - }, - _checkEntryMatch: function(keyword, location, contentType, docDomain, thirdParty, sitekey) - { - var list = this.filterByKeyword[keyword]; - for (var i = 0; i < list.length; i++) - { - var filter = list[i]; - if (filter == "#this") - { - filter = list; - } - if (filter.matches(location, contentType, docDomain, thirdParty, sitekey)) - { - return filter; - } - } - return null; - }, - matchesAny: function(location, contentType, docDomain, thirdParty, sitekey) - { - var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); - if (candidates === null) - { - candidates = []; - } - candidates.push(""); - for (var i = 0, l = candidates.length; i < l; i++) - { - var substr = candidates[i]; - if (substr in this.filterByKeyword) - { - var result = this._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); - if (result) - { - return result; - } - } - } - return null; - } -}; - -function CombinedMatcher() -{ - this.blacklist = new Matcher(); - this.whitelist = new Matcher(); - this.resultCache = createDict(); -} -CombinedMatcher.maxCacheEntries = 1000; -CombinedMatcher.prototype = { - blacklist: null, - whitelist: null, - resultCache: null, - cacheEntries: 0, - clear: function() - { - this.blacklist.clear(); - this.whitelist.clear(); - this.resultCache = createDict(); - this.cacheEntries = 0; - }, - add: function(filter) - { - if (filter instanceof WhitelistFilter) - { - this.whitelist.add(filter); - } - else - { - this.blacklist.add(filter); - } - if (this.cacheEntries > 0) - { - this.resultCache = createDict(); - this.cacheEntries = 0; - } - }, - remove: function(filter) - { - if (filter instanceof WhitelistFilter) - { - this.whitelist.remove(filter); - } - else - { - this.blacklist.remove(filter); - } - if (this.cacheEntries > 0) - { - this.resultCache = createDict(); - this.cacheEntries = 0; - } - }, - findKeyword: function(filter) - { - if (filter instanceof WhitelistFilter) - { - return this.whitelist.findKeyword(filter); - } - else - { - return this.blacklist.findKeyword(filter); - } - }, - hasFilter: function(filter) - { - if (filter instanceof WhitelistFilter) - { - return this.whitelist.hasFilter(filter); - } - else - { - return this.blacklist.hasFilter(filter); - } - }, - getKeywordForFilter: function(filter) - { - if (filter instanceof WhitelistFilter) - { - return this.whitelist.getKeywordForFilter(filter); - } - else - { - return this.blacklist.getKeywordForFilter(filter); - } - }, - isSlowFilter: function(filter) - { - var matcher = filter instanceof WhitelistFilter ? this.whitelist : this.blacklist; - if (matcher.hasFilter(filter)) - { - return !matcher.getKeywordForFilter(filter); - } - else - { - return !matcher.findKeyword(filter); - } - }, - matchesAnyInternal: function(location, contentType, docDomain, thirdParty, sitekey) - { - var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); - if (candidates === null) - { - candidates = []; - } - candidates.push(""); - var blacklistHit = null; - for (var i = 0, l = candidates.length; i < l; i++) - { - var substr = candidates[i]; - if (substr in this.whitelist.filterByKeyword) - { - var result = this.whitelist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); - if (result) - { - return result; - } - } - if (substr in this.blacklist.filterByKeyword && blacklistHit === null) - { - blacklistHit = this.blacklist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); - } - } - return blacklistHit; - }, - matchesAny: function(location, docDomain) - { - var key = location + " " + docDomain + " "; - if (key in this.resultCache) - { - return this.resultCache[key]; - } - var result = this.matchesAnyInternal(location, 0, docDomain, null, null); - if (this.cacheEntries >= CombinedMatcher.maxCacheEntries) - { - this.resultCache = createDict(); - this.cacheEntries = 0; - } - this.resultCache[key] = result; - this.cacheEntries++; - return result; - } -}; -var defaultMatcher = new CombinedMatcher(); - -var direct = 'DIRECT;'; - -for (var i = 0; i < rules.length; i++) { - defaultMatcher.add(Filter.fromText(rules[i])); -} - -function FindProxyForURL(url, host) { - if (defaultMatcher.matchesAny(url, host) instanceof BlockingFilter) { - return proxy; - } - return direct; -} diff --git a/v2rayN/v2rayN/Resources/privoxy_conf.txt b/v2rayN/v2rayN/Resources/privoxy_conf.txt deleted file mode 100644 index 6a265b25..00000000 --- a/v2rayN/v2rayN/Resources/privoxy_conf.txt +++ /dev/null @@ -1,8 +0,0 @@ -listen-address __PRIVOXY_BIND_IP__:__PRIVOXY_BIND_PORT__ -toggle 0 -logfile v2ray_privoxy.log -show-on-task-bar 0 -activity-animation 0 -forward-socks5 / 127.0.0.1:__SOCKS_PORT__ . -max-client-connections 2048 -hide-console diff --git a/v2rayN/v2rayN/Resx/ResUI.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.Designer.cs index b5b956d6..91bf3499 100644 --- a/v2rayN/v2rayN/Resx/ResUI.Designer.cs +++ b/v2rayN/v2rayN/Resx/ResUI.Designer.cs @@ -19,7 +19,7 @@ namespace v2rayN.Resx { // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class ResUI { @@ -627,6 +627,15 @@ namespace v2rayN.Resx { } } + /// + /// 查找类似 Operation success 的本地化字符串。 + /// + internal static string OperationSuccess { + get { + return ResourceManager.GetString("OperationSuccess", resourceCulture); + } + } + /// /// 查找类似 Please Fill Remarks 的本地化字符串。 /// @@ -654,6 +663,15 @@ namespace v2rayN.Resx { } } + /// + /// 查找类似 Please select rules 的本地化字符串。 + /// + internal static string PleaseSelectRules { + get { + return ResourceManager.GetString("PleaseSelectRules", resourceCulture); + } + } + /// /// 查找类似 Please select the server first 的本地化字符串。 /// @@ -681,6 +699,15 @@ namespace v2rayN.Resx { } } + /// + /// 查找类似 Are you sure to remove the rules? 的本地化字符串。 + /// + internal static string RemoveRules { + get { + return ResourceManager.GetString("RemoveRules", resourceCulture); + } + } + /// /// 查找类似 Are you sure to remove the server? 的本地化字符串。 /// diff --git a/v2rayN/v2rayN/Resx/ResUI.resx b/v2rayN/v2rayN/Resx/ResUI.resx index 50d37abe..d934df5b 100644 --- a/v2rayN/v2rayN/Resx/ResUI.resx +++ b/v2rayN/v2rayN/Resx/ResUI.resx @@ -361,4 +361,13 @@ The ping of current service: {0} + + Operation success + + + Please select rules + + + Are you sure to remove the rules? + \ No newline at end of file diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx index 4b312497..3346ab6a 100644 --- a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx @@ -361,4 +361,13 @@ 当前服务的真连接延迟: {0} + + 操作成功 + + + 请先选择规则 + + + 是否确定移除规则? + \ No newline at end of file diff --git a/v2rayN/v2rayN/Sample/custom_routing_rules b/v2rayN/v2rayN/Sample/custom_routing_rules new file mode 100644 index 00000000..94b28108 --- /dev/null +++ b/v2rayN/v2rayN/Sample/custom_routing_rules @@ -0,0 +1,28 @@ +[{ + "remarks": "block", + "outboundTag": "block", + "domain": [ + "geosite:category-ads-all" + ] + }, + { + "remarks": "direct", + "outboundTag": "direct", + "domain": [ + "geosite:cn" + ] + }, + { + "remarks": "direct", + "outboundTag": "direct", + "ip": [ + "geoip:private", + "geoip:cn" + ] + }, + { + "remarks": "proxy", + "port": "0-65535", + "outboundTag": "proxy" + } +] \ No newline at end of file diff --git a/v2rayN/v2rayN/Tool/CDateTime.cs b/v2rayN/v2rayN/Tool/CDateTime.cs deleted file mode 100644 index fb7a2e25..00000000 --- a/v2rayN/v2rayN/Tool/CDateTime.cs +++ /dev/null @@ -1,156 +0,0 @@ -using System; -using System.Net; -using System.Runtime.InteropServices; -using System.Text; - -namespace v2rayN -{ - class CDateTime - { - /// - /// 设置本地系统时间 - /// - public static void SetLocalTime() - { - using (WebClient wc = new WebClient()) - { - string url = ""; - string result = string.Empty; - - try - { - wc.Encoding = Encoding.UTF8; - wc.DownloadStringCompleted += wc_DownloadStringCompleted; - wc.DownloadStringAsync(new Uri(url)); - } - catch - { - } - } - } - - static void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) - { - try - { - string result = e.Result; - if (Utils.IsNullOrEmpty(result)) - { - return; - } - EWebTime webTime = Utils.FromJson(result); - if (webTime != null - && webTime.result != null - && webTime.result.stime != null - && !Utils.IsNullOrEmpty(webTime.result.stime)) - { - DateTime dtWeb = GetTimeFromLinux(webTime.result.stime); - - SYSTEMTIME st = new SYSTEMTIME(); - st.FromDateTime(dtWeb); - - //调用Win32 API设置系统时间 - Win32API.SetLocalTime(ref st); - } - } - catch - { - } - } - - /// - /// 时间戳转为C#格式时间 - /// - /// - /// - private static DateTime GetTimeFromLinux(string timeStamp) - { - DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); - long lTime = long.Parse(timeStamp + "0000000"); - TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); - } - } - - /// - /// - /// - public struct SYSTEMTIME - { - public ushort wYear; - public ushort wMonth; - public ushort wDayOfWeek; - public ushort wDay; - public ushort wHour; - public ushort wMinute; - public ushort wSecond; - public ushort wMilliseconds; - - /// - /// 从System.DateTime转换。 - /// - /// System.DateTime类型的时间。 - public void FromDateTime(DateTime time) - { - wYear = (ushort)time.Year; - wMonth = (ushort)time.Month; - wDayOfWeek = (ushort)time.DayOfWeek; - wDay = (ushort)time.Day; - wHour = (ushort)time.Hour; - wMinute = (ushort)time.Minute; - wSecond = (ushort)time.Second; - wMilliseconds = (ushort)time.Millisecond; - } - - /// - /// 转换为System.DateTime类型。 - /// - /// - public DateTime ToDateTime() - { - return new DateTime(wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds); - } - - /// - /// 静态方法。转换为System.DateTime类型。 - /// - /// SYSTEMTIME类型的时间。 - /// - public static DateTime ToDateTime(SYSTEMTIME time) - { - return time.ToDateTime(); - } - } - - public class Win32API - { - [DllImport("Kernel32.dll")] - public static extern bool SetLocalTime(ref SYSTEMTIME Time); - [DllImport("Kernel32.dll")] - public static extern void GetLocalTime(ref SYSTEMTIME Time); - } - - public class WTResult - { - /// - /// - /// - public string stime { get; set; } - } - - public class EWebTime - { - /// - /// - /// - public WTResult result { get; set; } - /// - /// - /// - public int error_code { get; set; } - /// - /// - /// - public string reason { get; set; } - } -} - diff --git a/v2rayN/v2rayN/Tool/Utils.cs b/v2rayN/v2rayN/Tool/Utils.cs index 8fa10c63..f6ac4c67 100644 --- a/v2rayN/v2rayN/Tool/Utils.cs +++ b/v2rayN/v2rayN/Tool/Utils.cs @@ -24,8 +24,7 @@ using Newtonsoft.Json.Linq; namespace v2rayN { class Utils - { - + { #region 资源Json操作 @@ -802,6 +801,10 @@ namespace v2rayN } } + public static void AddSubItem(ListViewItem i, string name, string text) + { + i.SubItems.Add(new ListViewItem.ListViewSubItem() { Name = name, Text = text }); + } #endregion #region TempPath diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj index d79b2067..3211d957 100644 --- a/v2rayN/v2rayN/v2rayN.csproj +++ b/v2rayN/v2rayN/v2rayN.csproj @@ -125,6 +125,12 @@ BaseServerForm.cs + + Form + + + RoutingSettingDetailsForm.cs + Form @@ -138,12 +144,6 @@ RoutingSettingForm.cs - - UserControl - - - RoutingSettingControl.cs - Form @@ -187,9 +187,9 @@ - + @@ -300,12 +300,11 @@ QRCodeControl.cs Designer - - RoutingSettingControl.cs - Designer + + RoutingSettingDetailsForm.cs - - RoutingSettingControl.cs + + RoutingSettingDetailsForm.cs SubSettingControl.cs @@ -374,6 +373,7 @@ + @@ -442,7 +442,6 @@ - diff --git a/v2rayN/v2rayN/v2rayN.csproj.user b/v2rayN/v2rayN/v2rayN.csproj.user index 778969a8..a36e9eb4 100644 --- a/v2rayN/v2rayN/v2rayN.csproj.user +++ b/v2rayN/v2rayN/v2rayN.csproj.user @@ -9,7 +9,7 @@ zh-CN false - ProjectFiles + ShowAllFiles false